繁体   English   中英

我想使用sqoop导入作业将数据压缩到配置单元列分区表中。 我们应该怎么做?

[英]I want to sqoop data using sqoop import job into hive column partitioned table. How can we do this?

我在国家/地区列上有一个配置单元表。 我的RDBMS列如下:

id int, fname varchar(45), lname varchar(45), email varchar(45), password varchar(45), street varchar(45), city varchar(45), state varchar(45), zipcode varchar(45), c_time timestamp

样本数据:1,Richard,Hernandez,XXXXXXXXX,XXXXXXXXX,6303 Heather Plaza,Brownsville,TX,69696,2017-07-20 20:24:17.0

Sqoop工作:

    sqoop job --create customer_partition -- import --connect jdbc:mysql://host/serverName 
    --username root -P --table customers --check-column c_time --incremental lastmodified 
--last-value 0 --merge-key id --target-dir '/user/cloudera/partitionedTables/customers_partition/' 
    --fields-terminated-by ',' --hive-import 
    --hive-table customers_partition --hive-partition-key "state";

Hive分区表:

create external table customers_partition(id int, fname varchar(64), lname varchar(64), email varchar(64), 
password varchar(64), street varchar(45), city varchar(45), zipcode varchar(64), cob_dt timestamp)
partitioned by (state varchar(45))
row format delimited
fields terminated by ','
location '/hdfsPath/customers_partition/';

在将sqoop导入hdfs文件夹后,输出文件包含以下格式的数据:

1,Richard,Hernandez,XXXXXXXXX,XXXXXXXXX,6303 Heather Plaza,Brownsville,TX,69696,2017-07-20 20:24:17.0
which points to same columns same as RDBMS columns. 

When I perform hive query: select * from customers_partition; showing 0 records found in hive.

这是因为由于分区导致的配置单元表列安排与常规RDBMS表列安排不同。

我们如何解决这个问题。 我想将数据直接导入到配置单元分区表中,并且每次运行此sqoop作业时都需要更新记录。 如果我错了,还有其他方法可以做到吗?

以及如何使用两个或多个配置单元分区列执行相同的操作。

您需要添加--hive-partition-value参数。 分区值必须是字符串。

由于您使用的是sqoop job --create因此不需要sqoop job --create --last-value 0 请删除它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM