JsonFile Reader#

JsonFileReader 提供了读取本地文件系统数据存储的能力。

配置样例#

{
  "job": {
    "setting": {
      "speed": {
        "channel": 1,
        "bytes": -1
      }
    },
    "content": [
      {
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "print": "true"
          }
        },
        "reader": {
          "name": "jsonfilereader",
          "parameter": {
            "path": [
              "/tmp/test*.json"
            ],
            "column": [
              {
                "index": "$.id",
                "type": "long"
              },
              {
                "index": "$.name",
                "type": "string"
              },
              {
                "index": "$.age",
                "type": "long"
              },
              {
                "index": "$.score.math",
                "type": "double"
              },
              {
                "index": "$.score.english",
                "type": "double"
              },
              {
                "index": "$.pubdate",
                "type": "date"
              },
              {
                "type": "string",
                "value": "constant string"
              }
            ]
          }
        }
      }
    ]
  }
}

其中 /tmp/test*.json 为同一个 json 文件的多个复制,内容如下:

{
  "name": "zhangshan",
  "id": 19890604,
  "age": 12,
  "score": {
    "math": 92.5,
    "english": 97.5,
    "chinese": 95
  },
  "pubdate": "2020-09-05"
}

参数说明#

配置项 是否必须 默认值 描述
path 本地文件系统的路径信息,注意这里可以支持填写多个路径,详细描述见下文
column 读取字段列表,type指定源数据的类型,详见下文
fieldDelimiter , 描述:读取的字段分隔符
compress 文本压缩类型,默认不填写意味着没有压缩。支持压缩类型为zip、gzip、bzip2
encoding utf-8 读取文件的编码配置

path#

本地文件系统的路径信息,注意这里可以支持填写多个路径

  • 当指定单个本地文件,JsonFileReader暂时只能使用单线程进行数据抽取。

  • 当指定多个本地文件,JsonFileReader支持使用多线程进行数据抽取。线程并发数通过通道数指定。

  • 当指定通配符,JsonFileReader尝试遍历出多个文件信息。例如: 指定/* 代表读取/目录下所有的文件,指定/bazhen/* 代表读取bazhen目录下游所有的文件。 JsonFileReader目前只支持 * 作为文件通配符。

特别需要注意的是,如果Path指定的路径下没有符合匹配的文件抽取,Addax将报错。

column#

读取字段列表,type指定源数据的类型,index指定当前列来自于json的指定,语法为 Jayway JsonPath 的语法,value指定当前类型为常量,不从源头文件读取数据,而是根据value值自动生成对应的列。 用户必须指定Column字段信息

对于用户指定Column信息,type必须填写,index/value必须选择其一

类型转换#

Addax 内部类型 本地文件 数据类型
Long Long
Double Double
String String
Boolean Boolean
Date Date