2014-04-01 25 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