2

我的 csv 文件如下所示:

"SMTEX","GSN","KOF",1.71,"2014-01-06 13:32:21"
"NXEX","JS","FIM",1.99,"2014-01-14 09:52:11"
"SMTEX","WT","VUX",0.82,"2014-01-23 02:22:37"

我通过以下方式将此数据导入配置单元:

hive -e 'CREATE TABLE playground.stuff (
             ex_id STRING,
             game_id  STRING,
             user_id       STRING,
             price         FLOAT,
             date          TIMESTAMP)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";'
hive -e 'LOAD DATA LOCAL INPATH "/path/to/csv" INTO TABLE playground.stuff;'

然而,时间戳似乎没有被解析。我得到的输出是:

hive> select * from stuff;
OK
"SMTEX" "GSN"   "KOF"   1.71    NULL
"NXEX"  "JS"    "FIM"   1.99    NULL
"SMTEX" "WT"    "VUX"   0.82    NULL

我究竟做错了什么?

4

3 回答 3

1

我怀疑是双引号。格式应为 yyyy-mm-dd hh:mm:ss 而不是“yyyy-mm-dd hh:mm:ss”。您会注意到双引号也出现在字符串字段中。

根据评论编辑答案:

Hive 本身不支持双引号,但是有一个 csv serde 可以为您执行此操作:https ://github.com/ogrodnek/csv-serde

于 2014-02-25T14:49:28.057 回答
1

Github 上有一个 jar ( https://github.com/ogrodnek/csv-serde ) csv-serde-1.1.2-0.11.0-all.jar。下载它并在命令提示符下运行 Hive 查询时添加 jar。

(摘自以上 Github 链接)

添加 jar 路径/to/csv-serde.jar;

创建表 my_table(a string, b string, ...) 行格式 serde 'com.bizo.hive.serde.csv.CSVSerde' 存储为 textfile ;

这用引用的值解决了我的问题。

如果您使用 Hue 将引用的 csv 数据上传到 Hive,请按照以下视频进行操作。 http://gethue.com/hadoop-tutorial-create-hive-tables-with-headers-and/

于 2016-02-20T22:37:58.030 回答
0

鉴于本文标题中的格式化字符串,请注意日期/时间格式的通用大小写在使用库解析函数时很重要。

MM代表月,而mm代表分钟;不被混淆。

HH表示 24 小时表示法与hh表示 12 小时表示法是另一个可能很重要的例子。

于 2016-02-04T08:22:59.347 回答