Sqoop-将MySQL数据导入到hive orc表

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

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/spider \
--username root --password 1234qwer \
--table org_ic_track --driver com.mysql.jdbc.Driver \
--create-hcatalog-table \
--hcatalog-database spider_tmp \
--hcatalog-table org_ic_track \
--hcatalog-partition-keys batch \
--hcatalog-partition-values 20190404 \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1
复制代码

 

查看表结构

复制代码
CREATE TABLE `org_ic_track`(
`id` int, 
`info_id` int, 
`company` varchar(250), 
`company_url` varchar(250), 
`invest_date` varchar(150), 
`invested_company` varchar(500), 
`invested_ratio` varchar(100), 
`update_time` string)
PARTITIONED BY ( 
`batch` string)
ROW FORMAT SERDE 
'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'hdfs://hadoop1:8020/home/hive/warehouse/spider_tmp.db/org_ic_track'
TBLPROPERTIES (
'orc.compress'='SNAPPY', 
'transient_lastDdlTime'='1554342988')
复制代码

 

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

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/spider \
--username root --password 1234qwer \
--table org_ic_track --driver com.mysql.jdbc.Driver \
--hcatalog-database spider_tmp \
--hcatalog-table org_ic_track \
--hcatalog-partition-keys batch \
--hcatalog-partition-values 20190405 \
-m 1
复制代码

 

sqoop导入数据(query)到已存在的hive orc表

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/spider \
--username root --password 1234qwer \
--query "select * from org_ic_track where update_time between '2019-04-01 21:16:04' and '2019-04-01 21:16:05' and \$CONDITIONS" \
--driver com.mysql.jdbc.Driver \
--hcatalog-database spider_tmp \
--hcatalog-table org_ic_track \
--hcatalog-partition-keys batch \
--hcatalog-partition-values 20190406 \
-m 1
复制代码

 

字段说明

复制代码
connect    JDBC连接信息
username    JDBC验证用户名
password    JDBC验证密码
table    要导入的源表名
driver    指定JDBC驱动
create-hcatalog-table    指定需要创建表,若不指定则默认不创建,注意若指定创建的表已存在将会报错
hcatalog-database    目标库
hcatalog-table    目标表名
hcatalog-storage-stanza    指定存储格式,该参数值会拼接到create table的命令中。默认:stored as rcfile
hcatalog-partition-keys    指定分区字段,多个字段请用逗号隔开(hive-partition-key的加强版)
hcatalog-partition-values    指定分区值,多分区值请用逗号隔开(hive-partition-value的加强)
复制代码

 

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

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

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

解决:抽取数据时指定字段类型

-map-column-hive company=String,company_url=String

 

posted on   嘣嘣嚓  阅读(4950)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示