【问题标题】:Date Field Schema in Avro Input KettleAvro Input Kettle 中的日期字段架构
【发布时间】:2014-04-01 08:57:14
【问题描述】:

我正在使用 Pentaho Data Integration (Kettle) 进行 ETL 过程,从 MongoDB 源中提取。

我的源有一个 ISODateField,所以从提取返回的 JSON 是这样的:

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

所以现在,我必须使用 AVRO 输入来反序列化这个 JSON。所以我定义了 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

【问题讨论】:

    标签: json mongodb etl kettle avro


    【解决方案1】:

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

    【讨论】:

    • 是的,这是个好主意。但是我通过升级 Pentaho 大数据插件找到了一个非常简单的解决方案
    【解决方案2】:

    我为这个问题找到的最简单的解决方案是将 Pentaho 大数据插件升级到更新版本 1.3.3

    在这个新版本中,避免了显式 mongodb 输入 json 的架构。所以最终的解决方案如下:

    全局视图:

    在 MongoDB 内部输入:

    架构是自动决定的,我可以修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 2019-12-21
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      相关资源
      最近更新 更多