加载日期时间字段在pig latin 0.12中不起作用

时间:2014-09-10 14:27:44

标签: datetime hadoop apache-pig

我正在使用pig 0.12,这里的文档说它支持datetime数据类型

http://pig.apache.org/docs/r0.12.0/basic.html#data-types

但是下面的LOAD语句在第一个字段上给了我一个UnsupportedOperationException。 hdfs位置包含制表符分隔文件,其中第一个字段的格式为YYYY-mm-DD。

rsa = LOAD '/mypath/*' USING PigStorage() as (
hit_date:datetime,
agency_id:long,
agency_name:chararray,
....
);

错误2999:意外的内部错误。空

java.lang.UnsupportedOperationException         在parquet.pig.PigSchemaConverter.convertWithName(PigSchemaConverter.java:273)         在parquet.pig.PigSchemaConverter.convert(PigSchemaConverter.java:248)         在parquet.pig.PigSchemaConverter.convert(PigSchemaConverter.java:285)         at parquet.pig.PigSchemaConverter.convertTypes(PigSchemaConverter.java:241)         在parquet.pig.PigSchemaConverter.convert(PigSchemaConverter.java:234)         在parquet.pig.TupleWriteSupport。(TupleWriteSupport.java:63)         在parquet.pig.ParquetStorer.getOutputFormat(ParquetStorer.java:103)         在org.apache.pig.newplan.logical.rules.InputOutputFileValidator $ InputOutputFileVisitor.visit(InputOutputFileValidator.java:80)

1 个答案:

答案 0 :(得分:1)

查看您共享的文档链接中数据类型下面的注释部分。它说 -

datetime字段没有原生常量类型。您可以使用 ToDate udf 和chararray常量作为参数来生成日期时间值。

rsa = load '/mypath/*' as (
    inDateChar:chararray,
    agency_id:long,
    agency_name:chararray,
    ....
    );
convertDate = foreach rsa generate ToDate(inDateChar, 'yyyy-MM-dd') as (inDateDT:datetime);

ToDate使用SimpleDateFormat。[http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html]