Hive 配置单元加载数据路径覆盖文本格式文件,导致SKEY列值重复

Hive 配置单元加载数据路径覆盖文本格式文件,导致SKEY列值重复,hive,hdfs,beeline,Hive,Hdfs,Beeline,正在尝试通过直线将格式良好的~80GB文本文件(CHR 01分隔)加载到配置单元中: beeline -u "<connector:server:port>;principal=<principal_name>" \ -e "LOAD DATA INPATH '/path/to/hdfs/dir' OVERWRITE INTO TABLE database.tableName;" 加载数据时,所有列似乎都具有正确的信息——输入的数量级至少相同(百万条记录中的10条),

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

beeline -u "<connector:server:port>;principal=<principal_name>"  \
-e "LOAD DATA INPATH '/path/to/hdfs/dir' OVERWRITE INTO TABLE database.tableName;"
加载数据时,所有列似乎都具有正确的信息——输入的数量级至少相同(百万条记录中的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
...
有没有人有克服这个问题的经验,或者对根本原因有什么想法?我相信我可以用另一种格式(ie/AVRO)获得更好的结果,但这有点不令人满意


文本文件导入到配置单元是否有最大限制?

列键的数据类型是什么

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


我建议您使用字符串、大整数或十进制作为主键。使用float时,将失去精度。e、 g.如果您有两个SKEY 8611317762和8611317761。我怀疑它们都被解释为8.611317762 x 10^10。这就是distinct返回错误答案的原因。

这最好作为一个注释使用——我目前将其作为浮点加载——它来自源系统,因为DECIMALI建议您使用字符串、大整数或十进制作为主键。使用float时,将失去精度。e、 g.如果您有两个SKEY 8611317762和8611317761。我怀疑它们都被解释为8.611317762 x 10^10。这就是为什么distinct返回了一个错误的答案。哇!这是浮动的一个“有趣”特性!我以后会记住这一点。。
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
...