Hive Load Data Inpath 覆盖文本格式文件导致重复的 SKEY 列值
Hive Load Data Inpath overwrite on text format file causing duplicate SKEY column values
尝试通过直线将格式良好的 ~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;"
table 是使用 correct/appropriate 架构和数据类型(100 列)创建的,具有以下参数:
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '[=11=]1'
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 是否有最大限制?
列键的数据类型是什么?
--查看 boethius 评论后更新----
我建议您使用 String、big int 或 decimal 作为主键。使用 float 你会失去精度。例如如果你有两个键 8611317762 和 8611317761。我怀疑作为浮点数,它们都被解释为 8.611317762 x 10^10。这就是 distinct 返回错误答案的原因。
尝试通过直线将格式良好的 ~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;"
table 是使用 correct/appropriate 架构和数据类型(100 列)创建的,具有以下参数:
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '[=11=]1'
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 是否有最大限制?
列键的数据类型是什么?
--查看 boethius 评论后更新----
我建议您使用 String、big int 或 decimal 作为主键。使用 float 你会失去精度。例如如果你有两个键 8611317762 和 8611317761。我怀疑作为浮点数,它们都被解释为 8.611317762 x 10^10。这就是 distinct 返回错误答案的原因。