我有一个CSV文件和相同的元数据。此CSV中的列由竖线分隔。符号。样本数据如下:
name|address|age|salary|doj
xyz | abcdef|29 |567,34|12/02/2001
在这里,salary
列的类型为小数,但不是period .
用作小数分隔符comma ,
。
我创建了Hive外部表,如下所示,并为此HiveNULL
的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 (.)
符号。
您可以轻松地将薪水作为字符串构建表,并在顶部的视图中替换逗号。这可能是最简单的操作,因为数据量很大,并且可能是其他人拥有的。
create view table employee_decimal as
select name
, address
, age
, cast(regexp_replace(salary, ',', '.') as decimal(7,3)) as salary
, doj
from employee;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句