用sqoop导入mysql数据到hive

原始脚本

sqoop import  \
--connect jdbc:mysql://你自己的IP地址:端口号/xxl_job  \
--username 你自己的MySQL数据库账户  \
--password 密码  \
--query "SELECT id,username,password,role,permission,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as sys_update_time FROM xxl_job_log"  \
--split-by mercode  \
--null-string '\\N'   \
--null-non-string '\\N'   \
--hcatalog-database ods   \
--hcatalog-table xxl_job_log_a   \
--hcatalog-partition-keys ss_dt   \
--hcatalog-partition-values "20230919"   \
--hcatalog-storage-stanza 'stored as orc'

改写后

# hive 分区导入 成功
sqoop import \
--connect jdbc:mysql://192.168.58.202:3306/xxl_job \      #mysql连接的url
--driver com.mysql.jdbc.Driver \        #使用mysql的驱动
--username root \
--password Mysql123! \
--query "SELECT id,username,password,role,permission,date_format(sysdate(), '%y.%m.%d %h:%i:%s') as sys_update_time FROM xxl_job_user where \$CONDITIONS" \      #使用sql语句导入,必须有where中的\$CONDITIONS" ,还要注意mysql和Oracle中的日期处理
--hive-import \                         #指定导入到hive里去
--hive-database ods \                   #导入的hive数据源
--hive-table xxl_job_user_a \           #导入的hive表
--target-dir /user/hive/warehouse/ods.db/xxl_job_user_a \   #必须指定目标路径
--hive-partition-key 'ss_dt' \          #分区字段,这个不写入建表语句中
--hive-partition-value '2023-09-19' \   #分区的值
--fields-terminated-by "," \   #分隔符,默认"\001",可以"\t",可以","
-m 1 #设置mapper的数量为1  或者写成  --num-mappers 1

可以在hdfs上查看到数据:
在这里插入图片描述
点进去是这样的:
在这里插入图片描述

然后去hive的命令行,建表,它会自动映射:

创建hive表格来映射数据字段:

# hive建表
CREATE TABLE IF NOT EXISTS ods.xxl_job_user_a( 
id                BIGINT,
username          STRING,
password          STRING,
role              STRING,
permission        STRING,
sys_update_time   TIMESTAMP
)
PARTITIONED BY ( ss_dt STRING )
row format delimited 
fields terminated by ','
STORED AS ORC;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值