【发布时间】:2016-08-18 17:33:27
【问题描述】:
我正在 hive 中创建一个表;
create table patients(
patient_id INT,
age_group STRING,
gender STRING,
income_range STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
load data local inpath '/mnt/patients.csv' into table patients;
现在当我使用命令时:
hive>select * from patients limit 5;
我得到了输出:
NULL 75-84, F, 32000-47999
NULL 75-84, M, 16000-23999
NULL 85+, M, <16000
NULL 65-74, F, 32000-47999
NULL <65, M, <16000
但是当我使用将 patient_id 分配为字符串时,它的显示:
910997967, 75-84, F, 32000-47999
506013497, 75-84, M, 16000-23999
432041392, 85+, M, <16000
633048699, 65-74, F, 32000-47999
我尝试使用:
hive>select CAST(patient_id AS int) from patients;
但它不会将值更改为 int 并且只显示
NULL
NULL
...
patient_id 的值如何转换为 int 值?
谢谢
【问题讨论】:
-
您似乎有一个逗号作为数据的一部分。我建议在将数据加载到表中时注意它。从字符串中删除逗号后,
CAST将正常工作。 -
首先确保您使用的分隔符在您的 csv 文件中是正确的。其次检查 csv 文件中的 int/double/float 值,文件中不应有 "" 。在您的情况下,@visakh 指出的分隔符问题似乎是。
-
@visakh: 非常感谢。你的观察帮助了我