当前位置:   article > 正文

Sqoop 导入 Mysql 数据到 Hive 中,并添加静态或动态分区_sqoopd导入hive分区如何配置

sqoopd导入hive分区如何配置

sqoop参数就不在这里说了,具体可以看这篇文章,很详细:

Sqoop基本原理及常用方法_所行化坦途的博客-CSDN博客_sqoop

导入 mysql 数据到 hive 中并添加静态分区 

示例:抽取 mysql 中 work.test 表到 hive 中 ods.test 表,并根据字段 day 添加静态分区。

Hive 中该表可以不存在,但是库必须存在。

  1. sqoop import \
  2. --connect jdbc:mysql://127.0.0.1:3306/work \  #注意这里可能要加参数,比如关闭SSL或者设置时区等等
  3. --username root \
  4. --password 123456 \
  5. --table test \
  6. --delete-target-dir \
  7. --target-dir /sqoop_tmp \
  8. --hive-import \
  9. --hive-table ods.test \ #这个写法相当于 --hive-database ods --hive-table test
  10. --hive-partition-key day \
  11. --hive-partition-value 2022-06 \
  12. --m 1

导入 mysql 数据到 hive 中并添加动态分区

大概就是3个步骤:

  1. 使用 sqoop 将数据导入到临时表

  2. 利用 hive 读取临时表的数据,添加动态分区

  3. 删除临时表

示例:抽取 mysql 中 work.work_data 表到 hive 中 ods.work_data 表,并根据字段 day 添加动态分区。

   1.  使用 sqoop 将数据导入到临时表

  1. sqoop import \
  2. --connect jdbc:mysql://127.0.0.1:3306/work \
  3. --username root \
  4. --password 123456 \
  5. --table work_data \
  6. --delete-target-dir \
  7. --target-dir /sqoop_tmp \
  8. --hive-import \
  9. --hive-table ods.work_data_tmp \  #不存在的表 sqoop 会自动创建
  10. --m 1

 2. 利用 hive 读取临时表的数据,添加动态分区

  1. # 进入 hive
  2. use ods;
  3. set hive.exec.dynamic.partition=true; # 开启动态分区
  4. set hive.exec.dynamic.partition.mode=nonstrict; # 开启动态分区非严格模式
  5. insert into table ods.work_data partition(day)
  6. select *,day from ods.work_data_tmp;

 注意,这个地方 select 尽量将字段写全,不要使用 *

3. 删除临时表

drop table ods.work_data_tmp;

注:如果动态分区实现有更好的方法,请各位大佬留言告诉我[/doge]

动态分区参考:SparkSQL抽取Mysql全量数据到Hive动态分区表中_月亮给我抄代码的博客-CSDN博客_spark sql 随机抽取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/774178
推荐阅读
相关标签
  

闽ICP备14008679号