如何在Hive中处理逗号分隔的十进制值?

时间:2016-12-20 15:36:30

标签: hive hortonworks-data-platform decimal-point

我有一个CSV文件和相同的元数据。此CSV中的列由管道|分隔符号。样本数据如下:

name|address|age|salary|doj
xyz | abcdef|29 |567,34|12/02/2001

此处salary列的类型为十进制,但不使用period .作为小数点分隔符,而是使用comma ,

我创建了Hive外部表,如下所示,对于此数据,Hive显示NULL列的salary

create external table employee as(
      name string,
      address string,
      age int,
      salary decimal(7,3),
      doj string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LOCATION 's3://bucket/folder_having_many_csv_files/';

如果我将salary列的数据类型更改为String,那么正如预期的那样,Hive工作正常。

我想知道如何告诉Hive这个特定列的类型为DECIMAL,小数点分隔符为comma (,)而不是period (.)符号。

1 个答案:

答案 0 :(得分:4)

您可以使用salary作为字符串轻松构建表,并在顶部的视图中替换逗号。这可能是最简单的事情,因为数据很大并且可能是其他人拥有它。

declare