2017-05-10 17 views
1

试图通过直线到(CHR 01分隔)加载一个格式良好的〜80GB文本文件转换成蜂巢:蜂房加载数据INPATH上的文本格式的文件覆写导致重复SKEY列的值

beeline -u "<connector:server:port>;principal=<principal_name>" \ 
-e "LOAD DATA INPATH '/path/to/hdfs/dir' OVERWRITE INTO TABLE database.tableName;" 

表用创建正确/适当的模式&数据类型(列100S),使用以下参数:

ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\001' 
STORED AS TEXTFILE; 

当数据被加载似乎所有列具有正确的信息 - 至少的大小的顺序相同输入(10米的米记录的错误),列中值的取样与期望值匹配;然而,第一列(巧合的是,SKEY)被严重复制 - 因为它被应用于第一次出现以下的记录。

SKEY  ValA ValB ValC ValD 
Record1 1 2 3 Apple 
Record2 7 12 22 Baseball 
Record3 9 28 10 Tennis 
Record4 6 2 3 Jeans 
... 
RecordN 8 4 12 Wishbone 
... 

变为:

SKEY  ValA ValB ValC ValD 
Record1 1 2 3 Apple 
Record1 7 12 22 Baseball 
Record1 9 28 10 Tennis 
.... 
Record4 6 2 3 Jeans 
Record4 8 4 12 Wishbone 
... 

人有经验,克服这个问题,或有关于根本原因的想法?我相信我可以用另一种格式(即/ AVRO)获得更好的结果,但有点不尽人意。

将文本文件导入到Hive是否存在最大限制?

回答

1

列键的数据类型是什么?

看着强颜欢笑的意见后--Updated ----

我会建议你使用字符串,主键大int或十进制。随着浮球你失去了精度。例如如果你有两个ske11 8611317762和8611317761.我怀疑作为浮动他们都被解释为8.611317762 x 10^10。这就是为什么不同的人会回答错误的答案。

+0

这是更好的作为注释 - 我将它作为浮动加载,目前 - 它来自源系统作为DECIMAL – boethius

+0

我建议您使用字符串,大int或小数为主键。随着浮球你失去了精度。例如如果你有两个ske11 8611317762和8611317761.我怀疑作为浮动他们都被解释为8.611317762 x 10^10。这就是为什么不同的人会回答错误的答案。 – Max08

+0

哇!这是一个漂亮的“有趣”功能!我将在未来记住这一点.. – boethius

相关问题