Sqoop 导入 Mysql 数据到 Hive 中,并添加静态或动态分区

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

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

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

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

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

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

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

大概就是3个步骤:

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

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

  3. 删除临时表

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

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

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

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

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

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

3. 删除临时表

drop table ods.work_data_tmp;

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

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月亮给我抄代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值