Sqoopインストール&インポートエクスポート
20830 ワード
Sqoop
コンセプト
データは従来のデータベースとHadoopの間からインポートされ、下位層ではMapReduceを使用して実現されていますが、集約操作を必要としないため、MapだけがReduceを持っていません.
シーンの操作
1)データデータRDBMSにおいて、Hiveを使用して処理したい2)Hive統計を使用して分析し、データはHiveにおいて、mysqlにどのように導き出し、統計結果を最終的にレポートによって可視化して展示するソリューションはmapreduceを使用して出力ファイルを作成できますが、作成が面倒なため、Sqoopというツール が現れます.に必要なパラメータRDBMS:url、driver、db、table、user、password HDFS:path Hive:databse、table、partition バージョン#バージョン#
1.4.* Sqoop1 *** 1.99.* Sqoop 2は主流で1.4を用いる.xバージョン
リファレンスポイント
Hadoopを基準点/基準点とするインポート:import RDBMS=>Hadoop エクスポート:export Hadoop=>RDBMS 導入のインストール
単純な使用
データインポート(テーブルのデータをHDFSにインポート)
パラメータの説明–connect mysqlデータベースアドレス–usernameデータベースユーザー名–passwordデータベースパスワード–tableテーブル名–delete-target-dirインポート前にHDFS上のフォルダを削除–mapreduce-job-name mrタスクの名前–columns指定msqlのフィールド–target-dir HDFSに格納されているパスを指します–fields-terminated-by指定分割ID、デフォルトは、-null-string文字列型nullをデフォルト値として指定-null-non-string文字列以外のnullをデフォルト値として指定-m mrのタスク数を指定し、デフォルトは4つ-queryはsql文を指定してクエリーを行います
–incremental append–check-column EMPNO–last-value 7788 EMPNOフィールドに従って7788以降データ追加
sqoop--options-file sqoop実行ファイルコマンド
HDFSをmysqlにエクスポート
エクスポートする前に自分でテーブルを作成する必要があります.テーブルが存在しない場合、sqoop exportエクスポートDsqoopは自動的に作成されません.export.records.per.statement一括エクスポート、xxバーごとにコミット–export-dirエクスポートフォルダ–columnsエクスポートフィールド–fields-terminated-byエクスポートデータの区切り記号-m mapタスクの数を指定
MySQLインポートHive
MySQLがHiveをインポートする場合、まずHiveにテーブル-hive-overwriteを作成して既存のデータを上書きする必要がありますデフォルトはhive-importがHiveにデータをインポートする識別子-hive-table Hiveのテーブル名-hive-partition-keyパーティションフィールドのkey-hive-partition-valueパーティションセグメントのvalue-fields-terminated-byフィールド分割子を追加し、デフォルトは、
Hive MySQLのエクスポート
まずmysqlでテーブルを作成するデフォルトは追加データです–export-dirエクスポートするデータがHDFSの場所を指定します
総合事例
1、需要:empとdept表はMySQLで、MySQLデータをHiveに抽出して統計分析を行い、統計結果をMySQLに返信する2、構想:Hive:emp_を作成するetlとdept_etlと結果テーブルresult_etl;統計:select e.empno,e.ename,e.deptno,e.dname from emp_etl e join dept_etl d on e.deptno=d.deptno;MySQL:result_を作成するetl結果表
4.shellスクリプトに封入する4.1 shellスクリプトの内容
コンセプト
データは従来のデータベースとHadoopの間からインポートされ、下位層ではMapReduceを使用して実現されていますが、集約操作を必要としないため、MapだけがReduceを持っていません.
シーンの操作
1)データデータRDBMSにおいて、Hiveを使用して処理したい2)Hive統計を使用して分析し、データはHiveにおいて、mysqlにどのように導き出し、統計結果を最終的にレポートによって可視化して展示する
1.4.* Sqoop1 *** 1.99.* Sqoop 2は主流で1.4を用いる.xバージョン
リファレンスポイント
Hadoopを基準点/基準点とする
wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.16.2.tar.gz
sofaware
[root@JD ~]# mv sqoop-1.4.6-cdh5.16.2.tar.gz /home/hadoop/sofaware/
hadoop
[root@JD software]# su - hadoop
[hadoop@JD software]$ tar -zxvf sqoop-1.4.6-cdh5.16.2.tar.gz -C ~/app/
Sqoop lib jar
mysql-connector-java-5.1.27-bin.jar
java-json.jar
hive-common-1.1.0-cdh5.16.2.jar
hive-exec-1.1.0-cdh5.16.2.jar
[hadoop@JD ~]$ vi ~/.bashrc
export SQOOP_HOME=/home/hadoop/app/sqoop-1.4.6-cdh5.16.2
export PATH=$SQOOP_HOME/bin:$PATH
[hadoop@JD ~]$ source ~/.bashrc
Sqoop conf , sqoop-env-template.sh sqoop-env.sh
[hadoop@JD conf]$ cp sqoop-env-template.sh sqoop-env.sh
hadoop hive
[hadoop@JD conf]$ vi sqoop-env.sh
export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2
export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.16.2
mysql lib
[hadoop@JD lib]$ cp mysql-connector-java-5.1.27-bin.jar /home/hadoop/app/sqoop-1.4.6-cdh5.16.2/lib
単純な使用
[hadoop@JD sqoop-1.4.6-cdh5.16.2]$ sqoop help
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
[hadoop@JD sqoop-1.4.6-cdh5.16.2]$ sqoop help list-databases
mysql
[hadoop@JD sqoop-1.4.6-cdh5.16.2]$ sqoop list-databases --connect jdbc:mysql://JD:3306 --username root --password xxx
information_schema
bigdata
mysql
performance_schema
ruozedata_erp
ruozedata_hive
test
mysql
[hadoop@JD sqoop-1.4.6-cdh5.16.2]$ sqoop list-tables --connect jdbc:mysql://JD:3306/bigdata --username root --password xxx
dept
emp
sal
salgrade
testdata
データインポート(テーブルのデータをHDFSにインポート)
パラメータの説明–connect mysqlデータベースアドレス–usernameデータベースユーザー名–passwordデータベースパスワード–tableテーブル名–delete-target-dirインポート前にHDFS上のフォルダを削除–mapreduce-job-name mrタスクの名前–columns指定msqlのフィールド–target-dir HDFSに格納されているパスを指します–fields-terminated-by指定分割ID、デフォルトは、-null-string文字列型nullをデフォルト値として指定-null-non-string文字列以外のnullをデフォルト値として指定-m mrのタスク数を指定し、デフォルトは4つ-queryはsql文を指定してクエリーを行います
–incremental append–check-column EMPNO–last-value 7788 EMPNOフィールドに従って7788以降データ追加
sqoop--options-file sqoop実行ファイルコマンド
1、 emp EMPNO,ENAME,JOB,SAL,COMM, \t , null ‘’, null 0, task, FromMySQL2HDFS
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin --username root \
--table emp \
--delete-target-dir --mapreduce-job-name FromMySQL2HDFS \
--columns "EMPNO,ENAME,JOB,SAL,COMM" \
--target-dir EMP_COLUMN_QUERY \
--fields-terminated-by '\t' \
--null-string '' \
--null-non-string '0' \
-m 1
hdfs
[hadoop@JD bin]$ hadoop fs -cat /user/hadoop/EMP_COLUMN_QUERY/part*
7369 SMITH CLERK 800.00 0
7499 ALLEN SALESMAN 1600.00 300.00
7521 WARD SALESMAN 1250.00 500.00
7566 JONES MANAGER 2975.00 0
7654 MARTIN SALESMAN 1250.00 1400.00
7698 BLAKE MANAGER 2850.00 0
7782 CLARK MANAGER 2450.00 0
7788 SCOTT ANALYST 3000.00 0
7839 KING PRESIDENT 5000.00 0
7844 TURNER SALESMAN 1500.00 0.00
7876 ADAMS CLERK 1100.00 0
7902 FORD ANALYST 3000.00 0
2、 sql hdfs , sql
$CONDITIONS, sql ''
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin --username root \
--delete-target-dir --mapreduce-job-name FromMySQL2HDFS \
--target-dir JOIN \
--fields-terminated-by '\t' \
--null-string '' \
--null-non-string '0' \
--query 'select e.empno,e.ename,e.deptno,d.dname from emp e join dept d on e.deptno=d.deptno and $CONDITIONS' \
-m 1
[hadoop@JD bin]$ hadoop fs -cat JOIN/part*
7369 SMITH 20 RESEARCH
7499 ALLEN 30 SALES
7521 WARD 30 SALES
7566 JONES 20 RESEARCH
7654 MARTIN 30 SALES
7698 BLAKE 30 SALES
7782 CLARK 10 ACCOUNTING
7788 SCOTT 20 RESEARCH
7839 KING 10 ACCOUNTING
7844 TURNER 30 SALES
7876 ADAMS 20 RESEARCH
7902 FORD 20 RESEARCH
3、 hdfs emp
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin --username root \
--table emp \
--mapreduce-job-name FromMySQL2HDFS \
--target-dir EMP_APPEND \
--fields-terminated-by '\t' \
--null-string '' \
--incremental append \
--check-column EMPNO \
--last-value 7788 \
--null-non-string '0' \
-m 1
[hadoop@JD bin]$ hadoop fs -cat emp/part*
7839 KING PRESIDENT 0 1981-11-17 00:00:00.0 5000.00 0 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00.0 1500.00 0.00 30
7876 ADAMS CLERK 7788 1983-01-12 00:00:00.0 1100.00 0 20
7902 FORD ANALYST 7566 1981-12-03 00:00:00.0 3000.00 0 20
4、 , hdfs , map
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--delete-target-dir \
--table salgrade \
--split-by 'GRADE'
[hadoop@JD bin]$ hadoop fs -ls salgrade/
-rw-r--r-- 1 hadoop supergroup 0 2019-12-26 23:09 salgrade/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 11 2019-12-26 23:09 salgrade/part-m-00000
-rw-r--r-- 1 hadoop supergroup 12 2019-12-26 23:09 salgrade/part-m-00001
-rw-r--r-- 1 hadoop supergroup 12 2019-12-26 23:09 salgrade/part-m-00002
-rw-r--r-- 1 hadoop supergroup 24 2019-12-26 23:09 salgrade/part-m-00003
5、mysql
mysql> select * from dept;
+--------+------------+----------+
| deptno | dname | loc |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
4 rows in set (0.00 sec)
sqoop mysql
[hadoop@JD bin]$ sqoop eval --connect jdbc:mysql://JD:3306/bigdata --password mysqladmin --username root --query "insert into dept values (60,'RD', 'BEIJING')"
mysql
mysql> select * from dept;
+--------+------------+----------+
| deptno | dname | loc |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
| 60 | RD | BEIJING |
+--------+------------+----------+
5 rows in set (0.01 sec)
emp.opt
import
--connect
jdbc:mysql://ruozedata001:3306/bigdata
--password
mysqladmin
--username
root
--target-dir
EMP_OPTIONS_FILE2
--delete-target-dir
--table
emp
-m
2
[hadoop@JD bin]$ sqoop --options-file ./emp.opt
HDFSをmysqlにエクスポート
エクスポートする前に自分でテーブルを作成する必要があります.テーブルが存在しない場合、sqoop exportエクスポートDsqoopは自動的に作成されません.export.records.per.statement一括エクスポート、xxバーごとにコミット–export-dirエクスポートフォルダ–columnsエクスポートフィールド–fields-terminated-byエクスポートデータの区切り記号-m mapタスクの数を指定
mysql emp_demo
mysql> create table emp_demo as select * from emp where 1=2
sqoop export \
-Dsqoop.export.records.per.statement=10 \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp_demo \
--export-dir /user/hadoop/EMP_COLUMN_QUERY \
--columns "EMPNO,ENAME,JOB,SAL,COMM" \
--fields-terminated-by '\t' \
-m 1
mysql
mysql> select * from emp_demo;
+-------+--------+-----------+------+----------+---------+---------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-----------+------+----------+---------+---------+--------+
| 7369 | SMITH | CLERK | NULL | NULL | 800.00 | 0.00 | NULL |
| 7499 | ALLEN | SALESMAN | NULL | NULL | 1600.00 | 300.00 | NULL |
| 7521 | WARD | SALESMAN | NULL | NULL | 1250.00 | 500.00 | NULL |
| 7566 | JONES | MANAGER | NULL | NULL | 2975.00 | 0.00 | NULL |
| 7654 | MARTIN | SALESMAN | NULL | NULL | 1250.00 | 1400.00 | NULL |
| 7698 | BLAKE | MANAGER | NULL | NULL | 2850.00 | 0.00 | NULL |
| 7782 | CLARK | MANAGER | NULL | NULL | 2450.00 | 0.00 | NULL |
| 7788 | SCOTT | ANALYST | NULL | NULL | 3000.00 | 0.00 | NULL |
| 7839 | KING | PRESIDENT | NULL | NULL | 5000.00 | 0.00 | NULL |
| 7844 | TURNER | SALESMAN | NULL | NULL | 1500.00 | 0.00 | NULL |
| 7876 | ADAMS | CLERK | NULL | NULL | 1100.00 | 0.00 | NULL |
| 7902 | FORD | ANALYST | NULL | NULL | 3000.00 | 0.00 | NULL |
+-------+--------+-----------+------+----------+---------+---------+--------+
12 rows in set (0.00 sec)
MySQLインポートHive
MySQLがHiveをインポートする場合、まずHiveにテーブル-hive-overwriteを作成して既存のデータを上書きする必要がありますデフォルトはhive-importがHiveにデータをインポートする識別子-hive-table Hiveのテーブル名-hive-partition-keyパーティションフィールドのkey-hive-partition-valueパーティションセグメントのvalue-fields-terminated-byフィールド分割子を追加し、デフォルトは、
1、
Hive
CREATE TABLE emp_import(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
mysql hive
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table emp_import \
--fields-terminated-by '\t' \
-m 1
hive
hive (db_hive1)> select * from emp_import;
OK
emp_import.empno emp_import.ename emp_import.job emp_import.mgr emp_import.hiredate emp_import.sal emp_import.comm emp_import.deptno
7369 SMITH CLERK 7902 1980-12-17 00:00:00.0 800.0 NULL 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00.0 1600.0 300.0 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00.0 1250.0 500.0 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00.0 2975.0 NULL 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00.0 1250.0 1400.0 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00.0 2850.0 NULL 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00.0 2450.0 NULL 10
7788 SCOTT ANALYST 7566 1982-12-09 00:00:00.0 3000.0 NULL 20
7839 KING PRESIDENT NULL 1981-11-17 00:00:00.0 5000.0 NULL 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00.0 1500.0 0.0 30
7876 ADAMS CLERK 7788 1983-01-12 00:00:00.0 1100.0 NULL 20
7902 FORD ANALYST 7566 1981-12-03 00:00:00.0 3000.0 NULL 20
2、 mysql hive
hive
CREATE TABLE emp_import_partition(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
partitioned by (pt string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table emp_import_partition \
--hive-partition-key 'pt' \
--hive-partition-value '2019-12-30' \
--fields-terminated-by '\t' \
-m 1
hive (db_hive1)> select * from emp_import_partition where pt='2019-12-30';
emp_import_partition.empno emp_import_partition.ename emp_import_partition.job emp_import_partition.mgr emp_import_partition.hiredate emp_import_partition.sal emp_import_partition.comm emp_import_partition.deptno emp_import_partition.pt
7369 SMITH CLERK 7902 1980-12-17 00:00:00.0 800.0 NULL 20 2019-12-30
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00.0 1600.0 300.0 30 2019-12-30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00.0 1250.0 500.0 30 2019-12-30
7566 JONES MANAGER 7839 1981-04-02 00:00:00.0 2975.0 NULL 20 2019-12-30
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00.0 1250.0 1400.0 30 2019-12-30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00.0 2850.0 NULL 30 2019-12-30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00.0 2450.0 NULL 10 2019-12-30
7788 SCOTT ANALYST 7566 1982-12-09 00:00:00.0 3000.0 NULL 20 2019-12-30
7839 KING PRESIDENT NULL 1981-11-17 00:00:00.0 5000.0 NULL 10 2019-12-30
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00.0 1500.0 0.0 30 2019-12-30
7876 ADAMS CLERK 7788 1983-01-12 00:00:00.0 1100.0 NULL 20 2019-12-30
7902 FORD ANALYST 7566 1981-12-03 00:00:00.0 3000.0 NULL 20 2019-12-30
Hive MySQLのエクスポート
まずmysqlでテーブルを作成するデフォルトは追加データです–export-dirエクスポートするデータがHDFSの場所を指定します
hive
sqoop export \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp_demo \
--export-dir /user/hive/warehouse/db_hive1.db/emp \
-m 1
mysql,
mysql> select * from emp_demo;
mysql> select * from emp_demo;
+-------+--------+-----------+------+---------------------+---------+---------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-----------+------+---------------------+---------+---------+--------+
| 7369 | SMITH | CLERK | NULL | NULL | 800.00 | 0.00 | NULL |
| 7499 | ALLEN | SALESMAN | NULL | NULL | 1600.00 | 300.00 | NULL |
| 7521 | WARD | SALESMAN | NULL | NULL | 1250.00 | 500.00 | NULL |
| 7566 | JONES | MANAGER | NULL | NULL | 2975.00 | 0.00 | NULL |
| 7654 | MARTIN | SALESMAN | NULL | NULL | 1250.00 | 1400.00 | NULL |
| 7698 | BLAKE | MANAGER | NULL | NULL | 2850.00 | 0.00 | NULL |
| 7782 | CLARK | MANAGER | NULL | NULL | 2450.00 | 0.00 | NULL |
| 7788 | SCOTT | ANALYST | NULL | NULL | 3000.00 | 0.00 | NULL |
| 7839 | KING | PRESIDENT | NULL | NULL | 5000.00 | 0.00 | NULL |
| 7844 | TURNER | SALESMAN | NULL | NULL | 1500.00 | 0.00 | NULL |
| 7876 | ADAMS | CLERK | NULL | NULL | 1100.00 | 0.00 | NULL |
| 7902 | FORD | ANALYST | NULL | NULL | 3000.00 | 0.00 | NULL |
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250.00 | 500.00 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.00 | 0.00 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100.00 | NULL | 20 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 |
+-------+--------+-----------+------+---------------------+---------+---------+--------+
2、 , job
job
sqoop job --create bigdata-sqoop-job -- \
import --connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp \
--delete-target-dir
job
sqoop job --exec bigdata-sqoop-job
job
sqoop job --delete bigdata-sqoop-job
job
[hadoop@JD bin]$ sqoop job --list
Available jobs:
bigdata-sqoop-job
総合事例
1、需要:empとdept表はMySQLで、MySQLデータをHiveに抽出して統計分析を行い、統計結果をMySQLに返信する2、構想:Hive:emp_を作成するetlとdept_etlと結果テーブルresult_etl;統計:select e.empno,e.ename,e.deptno,e.dname from emp_etl e join dept_etl d on e.deptno=d.deptno;MySQL:result_を作成するetl結果表
hive emp_etl dept_etl
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';
mysql hive
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table dept \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table dept_etl \
--fields-terminated-by '\t' \
-m 1
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table emp_etl \
--fields-terminated-by '\t' \
-m 1
hive
CREATE TABLE result_etl(
empno int,
ename string,
deptno int,
dname string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
insert overwrite table result_etl select e.empno, e.ename, e.deptno, d.dname from emp_etl e join dept_etl d on e.deptno=d.deptno;
mysql
create table etl_result(
empno int,
ename varchar(10),
deptno int,
dname varchar(20)
);
hive mysql
sqoop export \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table etl_result \
--export-dir /user/hive/warehouse/db_hive1.db/result_etl \
--fields-terminated-by '\t' \
-m 1
,
mysql> select * from etl_result;
+-------+--------+--------+------------+
| empno | ename | deptno | dname |
+-------+--------+--------+------------+
| 7369 | SMITH | 20 | RESEARCH |
| 7499 | ALLEN | 30 | SALES |
| 7521 | WARD | 30 | SALES |
| 7566 | JONES | 20 | RESEARCH |
| 7654 | MARTIN | 30 | SALES |
| 7698 | BLAKE | 30 | SALES |
| 7782 | CLARK | 10 | ACCOUNTING |
| 7788 | SCOTT | 20 | RESEARCH |
| 7839 | KING | 10 | ACCOUNTING |
| 7844 | TURNER | 30 | SALES |
| 7876 | ADAMS | 20 | RESEARCH |
| 7902 | FORD | 20 | RESEARCH |
+-------+--------+--------+------------+
12 rows in set (0.00 sec)
4.shellスクリプトに封入する4.1 shellスクリプトの内容
#!/bin/sh
set -x
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table dept \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table dept_etl \
--fields-terminated-by '\t' \
-m 1
sqoop import \
--connect jdbc:mysql://JD:3306/bigdata \
--password mysqladmin \
--username root \
--table emp \
--hive-overwrite \
--delete-target-dir \
--hive-import --hive-database db_hive1 \
--hive-table emp_etl \
--fields-terminated-by '\t' \
-m 1
sql="insert overwrite table result_etl select e.empno, e.ename, e.deptno, d.dname from emp_etl e join dept_etl d on e.deptno=d.deptno"
hive -e "$sql"
mysql -uroot -pruozedata <