Sqoop在很长一段时间都只支持导入为textfile、avrofile、sequencefile等格式,如果需要将数据导入为ORC、parquet等格式的Hive Table往往需要分两个步骤完成(先导出临时表,再通过Hive转换)。而从Sqoop 1.4.4开始,Sqoop集成了HCatalog,我们可以轻易地实现多格式支持。
HCatalog配置
Sqoop需要依赖HCatalog的lib,所以需要配置环境变量$HCAT_HOME,一般从hive目录下即可找到hcatalog的相关路径
导入命令
sqoop import --connect jdbc:mysql://127.0.0.1:3306/test --username your_user_name --password your_passwd --table table_name --driver com.mysql.jdbc.Driver --create-hcatalog-table --hcatalog-table table_name --hcatalog-partition-keys month,day --hcatalog-partition-values 12,09 --hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")'
参数说明
参数 | 说明 |
---|---|
connect | JDBC连接信息 |
username | JDBC验证用户名 |
password | JDBC验证密码 |
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的加强) |