【问题标题】:converting values from string to int in hive在 hive 中将值从字符串转换为 int
【发布时间】: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: 非常感谢。你的观察帮助了我

标签: casting hive


【解决方案1】:

正如@visakh 指出的那样,您的第一列中有一个逗号(,):patient_id。

您需要删除它。

你可以使用

    CAST(regexp_replace(patient_id, ',' , '') AS INT)

这类似于 Hive function to replace comma in column value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多