不包含请求的字段:可选的双

时间:2018-12-21 16:33:02

标签: hive

从Hive外部表中选择数据时,我遇到了奇怪的问题。

数据以镶木地板文件格式从SQL Server卸载,而SQL Server select子句中的一个字段(即金额字段并转换为浮点型)以外的所有其他字段均为“字符串”字段。

选择
将(field_1转换为float)转换为field_1,
field_2,
field_3
从表中;

Hive DDL-

创建外部表hive_tbl_1(
field_1浮动,
field_2字符串,
field_3字符串

PARTITIONED BY(data_date字符串) 行格式序列 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
存储为INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
位置
'hdfs:// mypath / data / file1 / 20181220'
TBLPROPERTIES('PARQUET.COMPRESS'='GZIP')

当我从该表中选择数据时,它会引发错误-

“不包含请求的字段:可选的double field_1”

请注意,只要字段在select语句中“ cast”到“ varchar”并在Hive DDL中创建为“ string”,其他所有表都可以正常工作并能够显示数据。我也尝试了其他数字类型,所有这些似乎在Hive中都存在问题。

为什么float类型会产生此问题以及如何解决?毕竟,我们不能总是总是将所有字段都强制转换为“ varchar”,否则在许多业务场景中也不会产生正确的结果。

0 个答案:

没有答案