1

尝试通过直线将格式良好的 ~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;

加载数据时,似乎所有列都具有正确的信息 - 至少与输入的数量级相同(数百万条记录),列中值的采样与预期值匹配;但是第一列(巧合的是,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 是否有最大限制?

4

1 回答 1

1

列键的数据类型是什么?

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

我建议您使用 String、big int 或 decimal 作为主键。使用 float 你会失去精度。例如,如果您有两个键 8611317762 和 8611317761。我怀疑它们都是浮点数,它们都被解释为 8.611317762 x 10^10。这就是为什么 distinct 返回错误答案的原因。

于 2017-05-11T23:42:15.187 回答