【sqoop】导入数据到orc格式hive指定分区表中

本文介绍了如何使用Sqoop将MySQL表的数据导入到Hive的ORC存储格式分区表中,包括配置环境变量、设置Sqoop参数以及处理数据类型问题。通过示例脚本展示了创建新表并导入数据以及向已存在表导入数据的过程,强调了在处理varchar类型数据时可能遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

以下文章是mysql表导入到hiveORC存储格式的分区表中

mysql表导入到hiveTEXTfile存储格式的分区表  请点此跳转

Sqoop需要依赖HCatalog的lib,所以需要配置环境变量$HCAT_HOME,一般从hive目录下即可找到hcatalog的相关路径

  • hive/lib中将hive-hcatalog-core-1.2.2.jar复制到sqoop/lib下
  • cp $HIVE_HOME/lib/hive-shims* $SQOOP_HOME/lib/ 
  • 在/etc/profile文件中添加
export HCATALOG_HOME=${HIVE_HOME}/hcatalog

 下面的脚本中需要赋值的变量

${IP}   mysql所在的服务器IP

${USERNAME}   mysql用户名

${PWD}   mysql密码

$MYSQLTABLE   mysql表

${date_field}   表中的时间字段

${partition_name}  hive中需要加入的分区字段名

${partition_value}   hive分区值

1、sqoop创建并导入数据到hive orc表

sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--create-hcatalog-table \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1

 where选项根据需求自行添加或者不加,不加where的效果和  --where "1=1 and \$CONDITIONS" \   一样

2、sqoop导入数据到已存在的hive orc表

sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1

若不指定字段类型,MySQL中的varchar数据抽取至hive中也会是varchar类型,但是varchar类型在hive中操作会出现各种问题

  1.抽取时长文本、含有特殊字符的文本抽取不全

  2.hive操作orc表varchar类型的字段造成乱码

解决:抽取数据时指定字段类型(xxx是你要改成String类型的column)

-map-column-hive xxx=String,xxxx=String

 -------------------------------------------------------------------------------------------------------------------

connectJDBC连接信息
usernameJDBC验证用户名
passwordJDBC验证密码
table要导入的源表名
driver指定JDBC驱动
create-hcatalog-table指定需要创建表,若不指定则默认不创建,注意若指定创建的表已存在将会报错
hcatalog-table要导出的目标表名
hcatalog-storage-stanza指定存储格式,该参数值会拼接到create table的命令中。默认:stored as rcfile
hcatalog-partition-keys指定分区字段,多个字段请用逗号隔开(hive-partition-key的加强版)
hcatalog-partition-values指定分区值,多分区值请用逗号隔开(hive-partition-value的加强)
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值