Hive未检测到时间戳格式

时间:2015-06-25 13:17:40

标签: date hadoop hive apache-pig cloudera

我有一个PIG脚本

  • 加载并转换来自csv
  • 的数据
  • 替换一些字符

调用java程序(JAR)将csv中的日期时间从06/02/2015 18:52转换为2015-6-2 18:52(mm / DD / yyyy转换为yyyy-MM-dd)< / p>

REGISTER /home/cloudera/DateTime.jar;

A = Load '/user/cloudera/Data.csv' using PigStorage(',') as (ac,datetime,amt,trace);

B = FOREACH A GENERATE ac, REPLACE(datetime, '\\/','-') as newdate,REPLACE(amt,'-','') as newamt,trace;

C = FOREACH B GENERATE ac,Converter.DateTime(newdate) as ConvDate,ConvAmt,trace;

Store C into '/user/cloudera/Output/' using PigStorage('\t');

样本输入 - 21467245 06/02/2015 18:52 -9.59 518

样本输出 - 21467245 2015-6-2 18:52 9.59 518

我正在将输出加载到配置单元中,其他字段在导入期间看起来很好,但是如果作为时间戳加载,则日期时间字段结果为null,并且在其字符串时保持完整。

哪里出错了?

使用Cloudera CDH 5

1 个答案:

答案 0 :(得分:0)

来自the hive docs:

  

文本文件中的时间戳必须使用格式yyyy-mm-dd   HH:MM:SS [.F ...]。如果它们是另一种格式,则将它们声明为   适当的类型(INT,FLOAT,STRING等)并使用UDF进行转换   他们是时间戳。

所以你需要改变你的Converter来输出这种格式,或者使用UDF ---或者只是把它们保存为字符串,这就是我通常做的事情!

相关问题