无法将csv文件中的数据加载到配置单元中

5hcedyr0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(433)

在将数据从csv文件加载到配置单元外部表时,我得到了“无”值。
我的csv文件结构如下:

creation_month,accts_created
7/1/2018,40847
6/1/2018,67216
5/1/2018,76009
4/1/2018,87611
3/1/2018,99687
2/1/2018,92631
1/1/2018,111951
12/1/2017,107717

“creation\u month”和“accts\u created”是我的列标题。

create external table monthly_creation
(creation_month DATE,
 accts_created INT
 )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' location '/user/dir4/'

位置是“/user/dir4/”,因为我在那里放置了“monthly\u acct\u creation.csv”文件,如下面的屏幕截图所示:

我不知道为什么我创建的外部表在源数据有日期和数字的情况下都有“none”值。
有人能帮忙吗?

oknwwptz

oknwwptz1#

配置单元中的日期数据类型格式只接受yyyy-mm-dd,因为您的日期字段的格式不同,并且在创建月份字段值时会导致空值。
使用create table语句中的skip.header.line属性创建creation\ month字段为字符串数据类型的表,并跳过第一行。
尝试以下ddl:

hive> create external table monthly_creation
(creation_month string,
 accts_created INT
 )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
Location '/user/dir4/'
tblproperties ("skip.header.line.count"="1");

hive> select * from monthly_creation;
+-----------------+----------------+--+
| creation_month  | accts_created  |
+-----------------+----------------+--+
| 7/1/2018        | 40847          |
| 6/1/2018        | 67216          |
| 5/1/2018        | 76009          |
| 4/1/2018        | 87611          |
| 3/1/2018        | 99687          |
| 2/1/2018        | 92631          |
| 1/1/2018        | 111951         |
| 12/1/2017       | 107717         |
+-----------------+----------------+--+
p5cysglq

p5cysglq2#

日期值以yyyy的形式描述特定的年/月/日-­毫米-­dd.例如,日期'2013-­01-­01'.
https://cwiki.apache.org/confluence/display/hive/languagemanual+types#languagemanualtypes-日期
我建议对日期列使用字符串类型,您可以稍后将其转换或解析为时间戳。
关于integer列,您需要跳过所有列的标题以适当地转换为int类型
顺便说一下,hue的新版本允许您直接从csv构建配置单元表

相关问题