Hive 由于精度损失,无法将数据插入分区表

Hive 由于精度损失,无法将数据插入分区表,hive,hdfs,impala,hue,Hive,Hdfs,Impala,Hue,我已经在两列上创建了一个外部表分区。这两列是存储为SEQUENCEFILE的“国家”和“州” 我现在正尝试使用Impala中的以下命令通过色调编辑器运行,将数据加载到表中- load data inpath '/usr/temp/input.txt' into table partitioned_user partition (country = 'US', state = 'CA'); 我得到以下错误- 分析异常:分区键值可能导致精度损失。需要将分区列的“US”转换为“VARCHAR(64

我已经在两列上创建了一个外部表分区。这两列是存储为SEQUENCEFILE的“国家”和“州”

我现在正尝试使用Impala中的以下命令通过色调编辑器运行,将数据加载到表中-

load data inpath '/usr/temp/input.txt' 
into table partitioned_user
partition (country = 'US', state = 'CA');
我得到以下错误-

分析异常:分区键值可能导致精度损失。需要将分区列的“US”转换为“VARCHAR(64)”:country

我做错了什么?我要插入的表中有列,如和,所有列的类型都是VARCHAR(64)-first_name、last_name、country、state


文件input.txt仅包含前两列的数据。我哪里出错了?

黑斑羚不会自动从大字体转换为小字体。。在插入之前,必须将()转换为
VARCHAR(64)
,以避免在Impala中出现此类异常

partition (country = cast('US' as VARCHAR(64)), state = cast('CA' as VARCHAR(64)))

或者使用表DDL中的
STRING
数据类型。

1。Hive/Impala使用通用的
String
,而
Varchar(x)
支持是一个很晚才添加的外观2。分区键作为元数据(在Metastore DB+的HDFS目录名中)进行管理,而不是存储在数据文件中,因此它们使用不同的代码库,并且不支持任何非纯
String
——带有alphanum字符或
Int
3的内容。Impala和Hive在不同的语言中有不同的代码库,在Hive中有效的东西在Impala中可能不起作用==>使用
字符串作为分区键,并在Hive和Impala中尝试使用您的命令以查看哪些是有效的。谢谢@leftjoin。它起作用了。奇怪的是,我确实投了一个石膏试过,但失败了。我不知道它现在是如何成功执行的。