2014-04-01 24 views
0

我使用Pentaho数据集成(Kettle)进行ETL过程,从MongoDB源中提取。Avro输入釜中的日期字段模式

我的信号源有ISODateField所以JSON从提取返回是这样的:

{ "_id" : { "$oid" : "533a0180e4b026f66594a13b"} , "fac_fecha" : { "$date" : "2014-04-01T00:00:00.760Z"} , "fac_fedlogin" : "KAYAK"} 

所以,现在,我要反序列化JSON这与AVRO输入。所以,我已经定义了AVRO模式 像

{ 
    "type": "record", 
    "name": "xml_feeds", 
    "fields": [ 
     {"name": "fac_fedlogin", "type": "string"}, 
     {"name": "fac_empcod", "type": "string"}, 
     {"name": "fac_fecha", "type": "string"} 
    ] 
} 

这将是确定这fac_fecha可能是一个日期类型,但AVRO不支持这一点。

在执行时间内,AVRO Input会拒绝所有行,因为它们有错误。这只有在我使用日期字段时才会发生。

我该怎么做的任何建议?

水壶版本:4.4.0 Pentaho的,大数据的插件:1.3.0

回答

0

我发现这个问题uprading Pentaho的大数据插件更新至新版本1.3.3

在这个新版本expliciting对MongoDB的输入JSON模式避免了最简单的解决方案。所以最终的解决方案显示如下:

全球视野: enter image description here

和MongoDB里面输入:

enter image description here

的模式是自动决定的,它可以修改我。

1

你可以把这个日期字符串转换为长(毫秒)。 这可以在Java和Javascript中完成。 然后,如果需要,您可以将长期转换回日期。

+0

是的,这是一个好主意。但是我通过升级Pentaho Big Data插件发现了一个非常简单的解决方案 – Lucas