Sqoop MysqlデータをHadoopテストレコードにインポート


1、queryを使用してmyqlデータをhdfsディレクトリに導く
/usr/lib/sqoop-current/bin/sqoop import \
--connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat \
--username MysqlUser \
--password MysqlPass \
--query 'select operator_uid,uid,room_id,fans_count,first_rec_start_date,first_rec_end_date,amount,created_time from invite_anchor_sum where $CONDITIONS;' \
--target-dir /tmp/nisj/sqoop/invite_anchor_sum \
--delete-target-dir \
--num-mappers 1 \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--direct \
--fields-terminated-by '\t'
hadoop dfs -ls/tmp/nisj/sqoop/
hadoop dfs -ls/tmp/nisj/sqoop/invite_anchor_sum
--query(hdfsまでしか行けないらしい)Must specify destination with--target-dir. 
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull  --username MysqlUser --password MysqlPass --query "select report_date,xappkey,login_count,new_count from game_cps_report where app_source=0 and \$CONDITIONS" --target-dir /tmp/nisj/sqoop/query1 --delete-target-dir --driver com.mysql.jdbc.Driver -m 1 --where "app_source=0"
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull  --username MysqlUser --password MysqlPass --query "select report_date,xappkey,login_count,new_count from game_cps_report where app_source=0 and \$CONDITIONS" --target-dir /tmp/nisj/sqoop/query1 --delete-target-dir --create-hive-table --hive-overwrite --hive-database ods --hive-table query_game_cps_report --driver com.mysql.jdbc.Driver -m 1 --where "app_source=0"
2、mysqlデータをhiveライブラリテーブルにインポート--mysqlデータをhiveデフォルトライブラリのデフォルトテーブルにインポート:
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-import --create-hive-table --driver com.mysql.jdbc.Driver -m 1
--mysqlデータを指定hdfsファイルにインポートします.
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --direct --target-dir /tmp/nisj/sqoop/game_click_report --delete-target-dir --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\t' --lines-terminated-by '
'
--mysqlデータはhive指定ライブラリ指定テーブルにインポートされます.
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-import --create-hive-table --hive-overwrite --hive-database ods --hive-table xxx_game_click_report --driver com.mysql.jdbc.Driver -m 1
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-import --delete-target-dir --hive-database ods --hive-table xxx_game_click_report --driver com.mysql.jdbc.Driver -m 1
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-import --delete-target-dir --hive-overwrite --hive-database ods --hive-table xxx_game_click_report --driver com.mysql.jdbc.Driver -m 1
--データインポート例外の処理:
java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestampsqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat
?zeroDateTimeBehavior=convertToNull
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull  --username MysqlUser --password MysqlPass --table game_cps_report --hive-import --create-hive-table  --delete-target-dir --hive-overwrite --hive-database ods --driver com.mysql.jdbc.Driver -m 1
--mysqlインポートテーブルバンドwhere条件
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull  --username MysqlUser --password MysqlPass --table game_cps_report --hive-import --create-hive-table  --delete-target-dir --hive-overwrite --hive-database ods --driver com.mysql.jdbc.Driver -m 1 --where "app_source=0"
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull  --username MysqlUser --password MysqlPass --table game_cps_report --hive-import --delete-target-dir --hive-overwrite --hive-database ods --driver com.mysql.jdbc.Driver -m 1 --where "app_source=0"
3.一般的なインポートでテーブルを作成するか、インポート中にテーブルを作成するかについて--データをインポートせずにHiveでテーブルを作成する
sqoop create-hive-table --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --create-hive-table --hive-database ods --hive-table game_click_report
sqoop create-hive-table --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-database ods --hive-table game_click_report
--テーブルを作成し、データをインポート
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --create-hive-table --hive-import --hive-overwrite --hive-database ods --hive-table game_click_report
--テーブルを作成してデータをインポート
sqoop import --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report --hive-import --hive-overwrite --hive-database ods --hive-table game_click_report
4、mysqlデータインポートパーティション表インポート一般表例:
sqoop import \
--connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull \
--username MysqlUser \
--password MysqlPass \
--table game_click_report \
--hive-import \
--delete-target-dir \
--hive-overwrite \
--hive-database ods \
--hive-table xxx_game_click_report \
--driver com.mysql.jdbc.Driver -m 1 \
--where "Report_Date='2017-01-10'" 
--パーティション表の作成:
drop table if exists xxx_game_click_report;
CREATE TABLE `xxx_game_click_report`(
  `id` bigint, 
  `report_date` string, 
  `game` int, 
  `click_count` int)
PARTITIONED BY ( 
  `data_day` varchar(10));
  
alter table xxx_game_click_report add partition (data_day='2017-01-10');
alter table xxx_game_click_report add partition (data_day='2017-01-09');
--mysqlデータインポートパーティションテーブル:
sqoop import \
--connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat?zeroDateTimeBehavior=convertToNull \
--username MysqlUser \
--password MysqlPass \
--table game_click_report \
--hive-import \
--delete-target-dir \
--hive-overwrite \
--hive-database ods \
--hive-table xxx_game_click_report \
--hive-partition-key data_day \
--hive-partition-value 2017-01-09 \
--driver com.mysql.jdbc.Driver -m 1 \
--where "Report_Date='2017-01-09'" 
5、SQLテストおよびJava関連sqoop evalの生成--connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass -e "select * from game_cps_report where app_source=0"
sqoop eval --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass -query "select report_date,xappkey,login_count,new_count from game_cps_report where app_source=0"
sqoop codegen --connect jdbc:mysql://MysqlHost:6605/jellyfish_hadoop_stat --username MysqlUser --password MysqlPass --table game_click_report