Sqoop MysqlデータをHadoopテストレコードにインポート
7489 ワード
1、queryを使用してmyqlデータをhdfsディレクトリに導く
hadoop dfs -ls/tmp/nisj/sqoop/invite_anchor_sum
--query(hdfsまでしか行けないらしい)Must specify destination with--target-dir.
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 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
/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