您的位置:

Kettle Json Input详解

一、Json Input的介绍

Kettle (Pentaho Data Integration (PDI)) 是一种商业领域下的 Open Source 的 ETL 工具,支持多种数据格式的存取转换,其中一种数据源是Json文件,由此而生的Json Input 是指可输入Json数据的输入组件。Json的数据格式具有极大的灵活性,不受数据源的限制,允许用户在各种数据格式中进行数据处理,因此Json Input的重要性也日益突显。

在Pentaho官网可以找到完整的PDI安装包以及json input的相关说明文档。

二、Json Input的配置与使用

通过打开Kettle软件中的工具菜单栏,选择Json Input组件,将组件拖入转换工程中的工具栏,然后就可以开始配置了。Json Input 的配置主要分为两个方面:

1、数据源配置

Json Input 数据源的配置包括文件路径、源文件名和数据格式三个方面,代码如下:

{
  "fileName": "/path/demo.json",
  "jsonFieldName": "JsonField",
  "jsonPath": [ "/name", "/id", "/address" ],
  "encoding": "UTF-8",
  "includeFilename": "N",
  "rowsLimit": 0,
  "dateFormatLenient": "Y",
  "dateFormatLocale": "",
  "dateFormatTimeZone": ""
}

上述代码中,fileName 代表数据文件路径,jsonFieldName 表示字段名,jsonPath 则代表需要获取的数据节点,encoding 则是文件编码,中括号中的 JsonPath 表示需要抽取的关键节点,如上句代码中示例的 /name 代表获取 JSON 中的名称字段,/id 则代表获取 JSON 中的 ID字段,/address 代表获取 JSON 中的地址字段,可以通过逗号隔开从而提取出多个字段。

2、目标源配置

如同其他输入组件,Json Input在输出方面也存在两种选择:文件输出和数据库输出。关于文件输出方面的代码如下:

{
  "targetFile": "/path/demo.txt",
  "createParentFolder": true,
  "append": false,
  "gzip": false,
  "escapeChr": "",
  "enclosure": "\"",
  "delimiter": ";",
  "headerEnabled": true,
  "format": "DOS",
  "enclosureForced": true,
  "endLine": "\n",
  "fields": [
            {
              "header": "Name",
              "jsonPath": "/name",
              "type": "String",
              "length": 255,
              "precision": -1,
              "dateFormat": "",
              "default": "",
              "nullString": "",
              "currencySymbol": "",
              "decimalSymbol": "",
              "groupingSymbol": ""
            },
            {
              "header": "Id",
              "jsonPath": "/id",
              "type": "Number",
              "length": -1,
              "precision": -1,
              "dateFormat": "",
              "default": "",
              "nullString": "",
              "currencySymbol": "",
              "decimalSymbol": ".",
              "groupingSymbol": ","
            },
            {
              "header": "Address",
              "jsonPath": "/address",
              "type": "String",
              "length": 255,
              "precision": -1,
              "dateFormat": "",
              "default": "",
              "nullString": "",
              "currencySymbol": "",
              "decimalSymbol": "",
              "groupingSymbol": ""
            }
  ]
}

上述代码中,targetFile 代表输出的目标文件路径,createParentFolder 是否创建父文件夹,fields 代表需要导出的字段配置,type 代表字段的数据类型。

三、Json Input在实际开发中的应用

Json Input 的应用非常广泛,主要可以应用在数据分析和数据处理两个模块中。

1、数据分析

Json Input可以实时对互联网中的 Json 数据文本进行解析,进而将数据转化为Kettle支持的格式,从而对数据进行进一步实际分析,以便大量的工具软件和算法库更方便地处理这些数据。

2、数据处理

Json Input同样在大量数据的处理中处于不可替代的地位。可以将各种数据源进行Json化后,通过Json Input组件完成对数据的提取、转换和载入,可以提高数据整合的工作效率,而且能够大幅度降低开发成本。

总结

Json数据格式的灵活性、大数据源、高效性以及广泛适用性,是Json Input组件在实际开发中得以广泛应用的基础。本文就Json Input的配置、应用在实际生产和数据分析中的优势做了较为详尽的阐述,能够对大家掌握Pentaho Data Integration (PDI)的 Json Input组件有很好提升。