Hive加载数据Inpath覆盖文本格式文件,导致重复的SKEY列值

时间:2017-05-10 22:53:34

标签: hive hdfs beeline

尝试通过直线将格式良好的~80GB文本文件(CHR 01分隔)加载到Hive中:

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

该表是使用正确/适当的架构创建的。数据类型(100列),包含以下参数:

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 个答案:

答案 0 :(得分:1)

列密钥的数据类型是什么?

- 查看boethius评论后更新----

我建议你使用String,big int或decimal作为主键。浮动你会失去精确度。例如如果你有两个skeys 8611317762和8611317761.我怀疑它们都被解释为8.611317762 x 10 ^ 10。这就是为什么不同的回答错误的答案。