我正在使用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)
答案 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]