hive與sqoop結合使用

2021-10-06 21:50:00 字數 4446 閱讀 3265

分類:樹形結構

id + pid

1 *** 0

2 yyy 1

商品:歸屬於某個分類

id name catagory_id

訂單表:

誰 什麼時間 買了什麼東西

訂單編號 會員編號 總額...

訂單條目:

商品 數量 單價 訂單編號

14天 今天-14天

select day,count(1) from *** where time group by day

day desc

業務資料存放在mysql中,後續需要大資料平台來進行處理

1) mysql匯入到hadoop(hive/hbase...)

2) 借助於大資料的分布式引擎:hive/spark/flink...

3) 處理完之後得到結果(結果資料還是儲存在hadoop)

4) 分析處理結果 匯出到 rdbms(mysql)

5) ui對接你們rdbms的資料來進行展示

spring boot + spring data + react

生產上面資料來源有兩種:

rdbms:需要使用框架或者技術把rdbms的資料匯入到hadoop

sqoop

spark

...log:需要使用框架或者技術把log採集到hadoop

flume

logstash

...

hadoop和rdbms之間進行資料傳輸的乙個工具而已

底層是使用mapreduce實現

sqoop的作業最終還是要提交到yarn上去執行的

3) 配置:

$sqoop_home/conf/sqoop-env.sh

4) $sqoop_home/lib

mysql驅動

5) 使用

一定要學會help的用法

usage: sqoop command [args]

sqoop help list-databases

sqoop list-tables \

--connect jdbc:mysql://localhost:3306/online_retailers \

--password ruozedata \

--username root

mysql ==> hdfs 匯入 import

create table emp_etl(

empno int,

ename string,

job string,

mgr int,

hiredate string,

sal double,

comm double,

deptno int

) row format delimited fields terminated by '\t';

create table dept_etl(

deptno int,

dname string,

loc string

) row format delimited fields terminated by '\t';

create table result_etl(

empno int,

ename string,

comm double,

dname string

) row format delimited fields terminated by '\t';

create table result_etl(

empno int,

ename varchar(20),

comm double,

dname varchar(10));

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop \

--password ruozedata --username root \

--table emp \

--mapreduce-job-name frommysql2hdfs \

--delete-target-dir \

--columns "empno,ename,job,sal,comm" \

--target-dir emp_column_where \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

--where 'sal>2000' \

-m 1

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop \

--password ruozedata --username root \

--mapreduce-job-name frommysql2hdfs \

--delete-target-dir \

--columns "empno,ename,job,sal,comm" \

--target-dir emp_column_query \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

--query "select * from emp where sal>2000 and \$conditions" \

-m 1

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop \

--password ruozedata --username root \

--mapreduce-job-name frommysql2hdfs \

--table salgrade \

--delete-target-dir \

--target-dir salgrade \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

--split-by 'grade' \

-m 2

import

--connect

jdbc:mysql://localhost:3306/sqoop

--password

ruozedata

--username

root

--mapreduce-job-name

frommysql2hdfs

--table

emp--delete-target-dir

--target-dir

emp_options_file

-m1

fs -ls vs fs -ls /

mr:reducer個數決定了最終輸出檔案的個數

沒有reducer呢?map

sqoop export \

--connect jdbc:mysql://localhost:3306/sqoop \

--password ruozedata --username root \

--mapreduce-job-name frommysql2hdfs \

--table emp_demo \

--export-dir /user/hive/warehouse/ruozedata_emp \

--fields-terminated-by '\t' \

-m 2

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop \

--password ruozedata --username root \

--table dept \

--mapreduce-job-name frommysql2hdfs \

--delete-target-dir \

--hive-import \

--hive-table dept_etl \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

-m 1

mysql:

emp dept

==> sqoop hive表

==> 表裡儲存 select e.empno, e.ename, e.deptno, d.dname from emp e join dept d on e.deptno=d.deptno;

==> mysql

使用sqoop從Hive導數到Oracle

導數命令 sqoop export table u cl ctl.mid order vip level change ma connect jdbc oracle thin 1521 biedwmiu username password columns id,vip no,order no,vip...

sqoop 安裝與使用

sqoop安裝 安裝在一台節點上就可以了。1.上傳sqoop 2.安裝和配置 在新增sqoop到環境變數 將資料庫連線驅動拷貝到 sqoop home lib裡 3.使用 第一類 資料庫中的資料匯入到hdfs上 sqoop import connect jdbc mysql username roo...

sqoop操作與使用

sqoop只要安裝到集群中的一台節點就可以了 1.上傳sqoop到節點中 2.安裝和配置 在新增sqoop到環境變數到 etc profile中 將資料庫連線驅動拷貝到 sqoop home lib裡 3.使用 第一類 資料庫中的資料匯入到hdfs上 sqoop import connect jdb...