WinseterCheng

1.在hive中建一个与mysql中一模一样的表

sqoop create-hive-table --connect jdbc:mysql://***.**.***.**:3306/数据库名称  --table 表名 --username root --password root --hive-partition-key 分区名称 --hive-table hive中的表名

2.在1完成后,自由导数到hive:

sqoop import  --connect jdbc:mysql://***:3306/数据库  --username root --password root  --query "SELECT * from hive_cc_daas_insurance_sales  where pt=$value  and \$CONDITIONS  limit 1000"  --target-dir /tmp/hive_cc_daas_insurance_sales --hive-table db_bi.hive_cc_daas_insurance_sales --hive-import --m 1 \
--hive-partition-key 分区名称 \
--hive-partition-value 分区值 

其中
a.$CONDITIONS 是必须的,具体原理可以百度。
b.--target-dir /tmp/hive_cc_daas_insurance_sales 指的是从mysql中的数据放到hdfs的哪部分上(Sqoop导数mysql->hdfs->hive)
c.1中的--hive-partition-key必须和2中的hive-partition-key,hive-partition-value同时存在或不存在
d.--fields-terminated-by \',\' mysql中的字段存储在HDFS上时,以,分割

3.如果导入到hive中到数据都是null(除了partition有数据),那么
把 --hive-drop-import-delims \
--fields-terminated-by \'\001\' \
删除了就行

分类:

技术点:

相关文章:

  • 2021-09-28
  • 2022-12-23
  • 2021-11-23
  • 2021-07-04
  • 2022-01-18
  • 2021-08-20
  • 2022-01-28
  • 2021-07-01
猜你喜欢
  • 2021-05-23
  • 2022-01-29
  • 2021-12-09
相关资源
相似解决方案