SQOOP MySQLからHiveにデータをインポート
7469 ワード
一、Hiveテーブルのインポート時に自動的にテーブル1を作成し、sqoop文を実行する
-hive-import説明sqoopここでインポートするのはhiveで他ではありません-create-hive-table自動作成テーブル(エラーが発生した場合)-hive-table自動作成テーブルの名前を指定します
2、上記の文を実行するのはエラーです
解決策は、Hive libの下のjarパケットをSQOOPのlibの下にコピーすることです.
3、再実行すれば間違いなく、Hiveにemp_があるかどうかを確認するmysqlテーブル、emp_を表示mysqlテーブルでは、データのインポートに成功しました
4、弊害–create-hive-tableパラメータを使用してテーブルを自動的に作成する方法では、テーブル内のフィールドタイプが予想と異なることがわかりますので、生産上は一般的にHiveを作成してからインポートします.
二、手動でHiveテーブルを作成してHiveテーブルを作成するときの区切り文字は、インポート時に指定した分割と同じでなければならない1、Hiveでempテーブルを作成し、区切り文字をtとする
2、SQOOPインポート文必須行指定区切り文字–fields-terminated-by
3、emp表にデータがある
4、–hive-overwriteパラメータは上書きデータ
三、パーティションテーブル1、Hiveにデータをインポートしてパーティションテーブルemp_を作成するpart
2、パーティションデータのインポート
-hive-partition-keyパーティションフィールド-hive-partition-valueパーティション値
sqoop import \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_etl \
-m 1 \
--hive-import \
--create-hive-table \
--hive-table emp_mysql
-hive-import説明sqoopここでインポートするのはhiveで他ではありません-create-hive-table自動作成テーブル(エラーが発生した場合)-hive-table自動作成テーブルの名前を指定します
2、上記の文を実行するのはエラーです
ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
解決策は、Hive libの下のjarパケットをSQOOPのlibの下にコピーすることです.
cp hive-common-1.1.0-cdh5.7.0.jar $SQOOP_HOME/lib
cp hive-shims* $SQOOP_HOME/lib
3、再実行すれば間違いなく、Hiveにemp_があるかどうかを確認するmysqlテーブル、emp_を表示mysqlテーブルでは、データのインポートに成功しました
hive (default)> show tables;
OK
tab_name
emp
emp_mysql
testhivedrivertable
4、弊害–create-hive-tableパラメータを使用してテーブルを自動的に作成する方法では、テーブル内のフィールドタイプが予想と異なることがわかりますので、生産上は一般的にHiveを作成してからインポートします.
二、手動でHiveテーブルを作成してHiveテーブルを作成するときの区切り文字は、インポート時に指定した分割と同じでなければならない1、Hiveでempテーブルを作成し、区切り文字をtとする
create table emp(
empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int
)row format delimited fields terminated by '\t'
2、SQOOPインポート文必須行指定区切り文字–fields-terminated-by
sqoop import \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_etl \
-m 1 \
--hive-import \
--hive-table emp \
--fields-terminated-by '\t'
3、emp表にデータがある
hive (default)> select * from emp;
OK
emp.empno emp.ename emp.job emp.mgr emp.hiredate emp.sal emp.comm emp.deptno
7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30
7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30
4、–hive-overwriteパラメータは上書きデータ
三、パーティションテーブル1、Hiveにデータをインポートしてパーティションテーブルemp_を作成するpart
create table emp_part(
empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int
)partitioned by (event_month string)
row format delimited fields terminated by '\t';
2、パーティションデータのインポート
sqoop import \
--connect jdbc:mysql://hadoop001:3306/sqoop \
--username root \
--password 123456 \
--table emp_etl \
-m 1 \
--hive-import \
--hive-table emp_part \
--fields-terminated-by '\t' \
--hive-partition-key 'event_month' \
--hive-partition-value '2018-08-08'
-hive-partition-keyパーティションフィールド-hive-partition-valueパーティション値