HDFS数据源

HDFS是一个分布式文件系统,为您提供读取和写入HDFS双向通道的功能,本文为您介绍DataWorks的HDFS数据同步的能力支持情况。

支持的版本

目前不支持阿里云文件存储HDFS版。

使用限制

离线读

使用HDFS Reader时,请注意以下事项:

  • 由于连通默认资源组到HDFS的网络链路比较复杂,建议您使用Serverless资源组(推荐)独享数据集成资源组完成数据同步任务。您需要确保您的资源组具备HDFS的namenodedatanode的网络访问能力。

  • HDFS默认情况下,使用网络白名单进行数据安全。基于此种情况,建议您使用Serverless资源组(推荐)独享数据集成资源组完成针对HDFS的数据同步任务。

  • 您通过脚本模式配置HDFS同步作业,并不依赖HDFS数据源网络连通性测试通过,针对此类错误您可以临时忽略。

  • 数据集成同步进程以admin账号启动,您需要确保操作系统的admin账号具备访问相应HDFS文件的读写权限,若无权限,可以转脚本模式,添加"hdfsUsername": "有权限的用户"

HDFS Reader支持以下功能:

  • 支持TextFile、ORCFile、rcfile、sequence file、csv和parquet格式的文件,且要求文件内容存放的是一张逻辑意义上的二维表。

  • 支持多种类型数据读取(使用String表示),支持列裁剪,支持列常量。

  • 支持递归读取、支持正则表达式*?

  • 支持ORCFile数据压缩,目前支持SNAPPYZLIB两种压缩方式。

  • 支持SequenceFile数据压缩,目前支持lZO压缩方式。

  • 多个File可以支持并发读取。

  • CSV类型支持压缩格式有gzip、bz2、zip、lzo、lzo_deflate和snappy。

  • 目前插件中Hive版本为1.1.1,Hadoop版本为2.7.1(Apache适配JDK1.6],在Hadoop 2.5.0、Hadoop 2.6.0和Hive 1.2.0测试环境中写入正常。

重要

HDFS Reader暂不支持单个File多线程并发读取,此处涉及到单个File内部切分算法。

离线写

使用HDFS Writer时,请注意以下事项:

  • 目前HDFS Writer仅支持TextFile、ORCFile和ParquetFile三种格式的文件,且文件内容存放的必须是一张逻辑意义上的二维表。

  • 由于HDFS是文件系统,不存在schema的概念,因此不支持对部分列写入。

  • 目前不支持DECIMAL、BINARY、ARRAYS、MAPS、STRUCTS和UNION等Hive数据类型。

  • 对于Hive分区表目前仅支持一次写入单个分区。

  • 对于TextFile,需要保证写入HDFS文件的分隔符与在Hive上创建表时的分隔符一致,从而实现写入HDFS数据与Hive表字段关联。

  • 目前插件中的Hive版本为1.1.1,Hadoop版本为2.7.1(Apache为适配JDK1.7)。在Hadoop2.5.0、Hadoop2.6.0和Hive1.2.0测试环境中写入正常。

  • HDFS Writer仅支持使用独享数据集成资源组

实现过程

HDFS Writer的实现过程如下所示:

  1. 根据您指定的path,创建一个HDFS文件系统上不存在的临时目录。

    创建规则:path_随机

  2. 将读取的文件写入这个临时目录。

  3. 全部写入后,将临时目录下的文件移动到您指定的目录(在创建文件时保证文件名不重复)。

  4. 删除临时目录。如果在此过程中,发生网络中断等情况造成无法与HDFS建立连接,需要您手动删除已经写入的文件和临时目录。

说明

数据同步需要使用Admin账号,并且有访问相应文件的读写权限。

支持的字段类型

离线读

由于文件表的元数据信息由Hive维护,并存放在Hive自己维护的元数据库(如MySQL)中。目前HDFS Reader不支持对Hive元数据的数据库进行访问查询,因此您在进行类型转换时,必须指定数据类型。

RCFile、ParquetFile、ORCFile、TextFile和SequenceFile中的类型,会默认转为数据集成支持的内部类型,如下表所示。

类型分类

数据集成column配置类型

Hive数据类型

整数类

long

tinyint、smallint、int和bigint

浮点类

double

float和double

字符串类

string

string、char、varchar、struct、map、array、union和binary

日期时间类

date

date和timestamp

布尔类

boolean

boolean

说明
  • long:HDFS文件中的整型类型数据,例如123456789

  • double:HDFS文件中的浮点类型数据,例如3.1415

  • bool:HDFS文件中的布尔类型数据,例如truefalse,不区分大小写。

  • date:HDFS文件中的时间类型数据,例如2014-12-31 00:00:00

Hive支持的数据类型TIMESTAMP可以精确到纳秒级别,所以TextFile、ORCFile中TIMESTAMP存放的数据类似于2015-08-21 22:40:47.397898389。如果转换的类型配置为数据集成的DATE,转换之后会导致纳秒部分丢失。所以如果需要保留纳秒部分的数据,请配置转换类型为数据集成的字符串类型。

离线写

HDFS Writer提供向HDFS文件系统指定路径中写入TextFile文件、 ORCFile文件以及ParquetFile格式文件,文件内容可以与Hive中的表关联。目前HDFS Writer支持大部分Hive类型,请注意检查您的数据类型。

HDFS Writer针对Hive数据类型的转换列表,如下所示。

说明

column的配置需要和Hive表对应的列类型保持一致。

类型分类

数据库数据类型

整数类

TINYINT、SMALLINT、INT和BIGINT

浮点类

FLOAT和DOUBLE

字符串类

CHAR、VARCHAR和STRING

布尔类

BOOLEAN

日期时间类

DATE和TIMESTAMP

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源详细的配置参数解释可在配置界面查看对应参数的文案提示

数据同步任务开发

数据同步任务的配置入口和通用配置流程可参见下文的配置指导。

单表离线同步任务配置指导

附录:脚本Demo与参数说明

离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。

Reader脚本Demo

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "hdfs",//插件名
            "parameter": {
                "path": "",//要读取的文件路径
                "datasource": "",//数据源
                "hadoopConfig":{
                "dfs.data.transfer.protection": "integrity",
               "dfs.datanode.use.datanode.hostname" :"true",
                "dfs.client.use.datanode.hostname":"true"
                 },
                "column": [
                    {
                        "index": 0,//序列号,index从0开始(下标索引从0开始计数),表示从本地文本文件第一列开始读取数据。
                        "type": "string"//字段类型
                    },
                    {
                        "index": 1,
                        "type": "long"
                    },
                    {
                        "index": 2,
                        "type": "double"
                    },
                    {
                        "index": 3,
                        "type": "boolean"
                    },
                    {
                        "format": "yyyy-MM-dd HH:mm:ss", //日期格式
                        "index": 4,
                        "type": "date"
                    }
                ],
                "fieldDelimiter": ",",//列分隔符
                "encoding": "UTF-8",//编码格式
                "fileType": ""//文本类型
            },
            "name": "Reader",
            "category": "reader"
        },
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""//错误记录数
        },
        "speed": {
            "concurrent": 3,//作业并发数
            "throttle": true //当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
            "mbps":"12"//限流
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

parquetSchema的HDFS Reader配置示例如下。

说明
  • fileType配置项必须设置为parquet

  • 如果您要读取parquet文件中的部分列,需在parquetSchema配置项中,指定完整schema结构信息,并在column中根据下标,筛选需要的同步列进行列映射。

"reader":  {
    "name": "hdfsreader",
    "parameter": {
        "path": "/user/hive/warehouse/addata.db/dw_ads_rtb_monitor_minute/thedate=20170103/hour_id=22/*",
        "defaultFS": "h10s010.07100.149:8020",
        "column": [
            {
                "index": 0,
                "type": "string"
            },
            {
                "index": 1,
                "type": "long"
            },
            {
                "index": 2,
                "type": "double"
            }
        ],
        "fileType": "parquet",
        "encoding": "UTF-8",
        "parquetSchema": "message m { optional int32 minute_id; optional int32 dsp_id; optional int32 adx_pid; optional int64 req; optional int64 res; optional int64 suc; optional int64 imp; optional double revenue; }"
    }
}

Reader脚本参数

参数

描述

是否必选

默认值

path

要读取的文件路径,如果要读取多个文件,可以使用简单正则表达式匹配,例如/hadoop/data_201704*,如果文件以时间命名且较为规律,则可以结合调度参数使用,调度参数将根据业务时间动态替换,详情请参见调度参数支持的格式

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

  • 当指定多个HDFS文件时,HDFS Reader支持使用多线程进行数据抽取,线程并发数通过作业并发数concurrent指定。

    说明

    实际启动的并发数是您的HDFS待读取文件数量和您配置作业并发数两者中的小者。

  • 当指定通配符,HDFS Reader尝试遍历出多个文件信息。例如指定/代表读取/目录下所有的文件,指定/bazhen/代表读取bazhen目录下游所有的文件。HDFS Reader目前只支持*?作为文件通配符,语法类似于通常的Linux命令行文件通配符。

请注意以下事项:

  • 数据集成会将一个同步作业所有待读取文件视作同一张数据表。您必须自己保证所有的File能够适配同一套schema信息,并且提供给数据集成权限可读。

  • 注意分区读取:Hive在建表时,可以指定分区。例如创建分区partition(day="20150820", hour="09"),对应的HDFS文件系统中,相应的表的目录下则会多出/20150820和/09两个目录且/20150820是/09的父目录。

    分区会列成相应的目录结构,在按照某个分区读取某个表所有数据时,则只需配置好JSON中path的值即可。例如需要读取表名叫mytable01下分区day为20150820这一天的所有数据,则配置如下。

    "path": "/user/hive/warehouse/mytable01/20150820/*"

defaultFS

Hadoop HDFS文件系统namenode节点地址。公共资源组不支持Hadoop高级参数HA的配置。

fileType

文件的类型,目前仅支持您配置为TEXTORCRCSEQCSVparquet。HDFS Reader能够自动识别文件的类型,并使用对应文件类型的读取策略。HDFS Reader在做数据同步前,会检查您配置的路径下所有需要同步的文件格式是否和fileType一致,如果不一致任务会失败。

fileType可以配置的参数值列表如下所示:

  • TEXT:表示TextFile文件格式。

  • ORC:表示ORCFile文件格式。

  • RC:表示RCFile文件格式。

  • SEQ:表示SequenceFile文件格式。

  • CSV:表示普通HDFS文件格式(逻辑二维表)。

  • PARQUET:表示普通Parquet文件格式。

由于TextFile和ORCFile是两种不同的文件格式,所以HDFS Reader对这两种文件的解析方式也存在差异,这种差异导致Hive支持的复杂复合类型(例如map、array、struct和union)在转换为数据集成支持的String类型时,转换的结果格式略有差异,以map类型为例:

  • ORCFile map类型经HDFS Reader解析,转换成数据集成支持的STRING类型后,结果为{job=80, team=60, person=70}

  • TextFile map类型经HDFS Reader解析,转换成数据集成支持的STRING类型后,结果为{job:80, team:60, person:70}

如上述转换结果所示,数据本身没有变化,但是表示的格式略有差异。所以如果您配置的文件路径中要同步的字段在Hive中是复合类型的话,建议配置统一的文件格式 。

最佳实践建议:

  • 如果需要统一复合类型解析出来的格式,建议您在Hive客户端将TextFile格式的表导成ORCFile格式的表。

  • 如果是Parquet文件格式,后面的parquetSchema则必填,此属性用来说明要读取的Parquet格式文件的格式。

对于您指定的column信息,type必须填写,indexvalue必须选择其一。

column

读取字段列表,type指定源数据的类型,index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量。不从源头文件读取数据,而是根据value值自动生成对应的列。默认情况下,您可以全部按照STRING类型读取数据,配置为"column": ["*"]

您也可以指定column字段信息(文件数据列和常量列配置二选一),配置如下。

{
  "type": "long",
  "index": 0
  //从本地文件文本第一列(下标索引从0开始计数)获取INT字段,index表示从数据文件中获取列数据。
},
{
  "type": "string",
  "value": "alibaba"
  //HDFS Reader内部生成alibaba的字符串字段作为当前字段,value表示常量列。
}
说明
  • index从0开始(下标索引从0开始计数),表示从本地文本文件第一列开始读取数据。

  • 建议您指定待读取的每一列数据的下标和类型,避免配置column *通配符。

fieldDelimiter

读取的字段分隔符,HDFS Reader在读取TextFile数据时,需要指定字段分割符,如果不指定默认为逗号(,)。HDFS Reader在读取ORCFile时,您无需指定字段分割符,Hive本身的默认分隔符为\u0001

说明
  • 如果您想将每一行作为目的端的一列,分隔符请使用行内容不存在的字符。例如,不可见字符\u0001

  • 分隔符不能使用\n

,

encoding

读取文件的编码配置。

utf-8

nullFormat

文本文件中无法使用标准字符串定义null(空指针),数据集成提供nullFormat定义哪些字符串可以表示为null。

例如您配置nullFormat:"null",如果源头数据是null,数据集成会将其视作null字段。

说明

字符串的null(n、u、l、l四个字符)和实际的null不同。

compress

当fileType(文件类型)为csv下的文件压缩方式,目前仅支持gzip、bz2、zip、lzo、lzo_deflate、hadoop-snappy和framing-snappy压缩。

说明
  • LZO存在lzolzo_deflate两种压缩格式。您在配置时,请注意不要配置错误。

  • 由于snappy目前没有统一的stream format,数据集成目前仅支持最主流的hadoop-snappy(hadoop上的snappy stream format)和framing-snappy(google建议的snappy stream format)。

  • ORC文件类型下无需填写。

parquetSchema

如果您的文件格式类型为Parquet,在配置column配置项的基础上,您还需配置parquetSchema,具体表示parquet存储的类型说明。您需要确保填写parquetSchema后,整体配置符合JSON语法。

message MessageType名 {
是否必填, 数据类型, 列名;
......................;
}

parquetSchema的配置格式说明如下:

  • MessageType名:填写名称。

  • 是否必填:required表示非空,optional表示可为空。推荐全填optional。

  • 数据类型:Parquet文件支持BOOLEAN、Int32、Int64、Int96、FLOAT、DOUBLE、BINARY(如果是字符串类型,请填BINARY)和fixed_len_byte_array类型。

  • 每行列设置必须以分号结尾,最后一行也要写上分号。

配置示例如下所示。

"parquetSchema": "message m { optional int32 minute_id; optional int32 dsp_id; optional int32 adx_pid; optional int64 req; optional int64 res; optional int64 suc; optional int64 imp; optional double revenue; }"

csvReaderConfig

读取CSV类型文件参数配置,Map类型。读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。

常见配置如下所示。

"csvReaderConfig":{
  "safetySwitch": false,
  "skipEmptyRecords": false,
  "useTextQualifier": false
}

所有配置项及默认值,配置时csvReaderConfig的map中请严格按照以下字段名字进行配置。

boolean caseSensitive = true;
char textQualifier = 34;
boolean trimWhitespace = true;
boolean useTextQualifier = true;//是否使用csv转义字符。
char delimiter = 44;//分隔符
char recordDelimiter = 0;
char comment = 35;
boolean useComments = false;
int escapeMode = 1;
boolean safetySwitch = true;//单列长度是否限制100,000字符。
boolean skipEmptyRecords = true;//是否跳过空行。
boolean captureRawRecord = true;

hadoopConfig

hadoopConfig中可以配置与Hadoop相关的一些高级参数,例如HA的配置。公共资源组不支持Hadoop高级参数HA的配置。

"hadoopConfig":{
"dfs.nameservices": "testDfs",
"dfs.ha.namenodes.testDfs": "namenode1,namenode2",
"dfs.namenode.rpc-address.youkuDfs.namenode1": "",
"dfs.namenode.rpc-address.youkuDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"dfs.data.transfer.protection": "integrity",
"dfs.datanode.use.datanode.hostname" :"true",
"dfs.client.use.datanode.hostname":"true"
}
说明
"hadoopConfig":{ "dfs.data.transfer.protection": "integrity", "dfs.datanode.use.datanode.hostname" :"true", "dfs.client.use.datanode.hostname":"true" }

上述参数为hdfs reader插件中配置的kerberos认证。如果您在HDFS数据源已经配置了kerberos认证,则在hdfs reader插件中无需重复配置。配置HDFS数据源,详情请参见配置HDFS数据源

haveKerberos

是否有Kerberos认证,默认为false。例如用户配置为true,则配置项kerberosKeytabFilePath和kerberosPrincipal为必填。

false

kerberosKeytabFilePath

Kerberos认证keytab文件的绝对路径。如果haveKerberos为true,则必选。

kerberosPrincipal

Kerberos认证Principal名,如****/hadoopclient@**.*** 。如果haveKerberos为true,则必选。

说明

由于Kerberos需要配置keytab认证文件的绝对路径,您需要在资源组上使用此功能。配置示例如下。

"haveKerberos":true,
"kerberosKeytabFilePath":"/opt/datax/**.keytab",
"kerberosPrincipal":"**/hadoopclient@**.**"

Writer脚本Demo

{
    "type": "job",
    "version": "2.0",//版本号。
    "steps": [
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "hdfs",//插件名。
            "parameter": {
                "path": "",//存储到Hadoop HDFS文件系统的路径信息。
                "fileName": "",//HDFS Writer写入时的文件名。
                "compress": "",//HDFS文件压缩类型。
                "datasource": "",//数据源。
                "column": [
                    {
                        "name": "col1",//字段名。
                        "type": "string"//字段类型。
                    },
                    {
                        "name": "col2",
                        "type": "int"
                    },
                    {
                        "name": "col3",
                        "type": "double"
                    },
                    {
                        "name": "col4",
                        "type": "boolean"
                    },
                    {
                        "name": "col5",
                        "type": "date"
                    }
                ],
                "writeMode": "",//写入模式。
                "fieldDelimiter": ",",//列分隔符。
                "encoding": "",//编码格式。
                "fileType": "text"//文本类型。
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""//错误记录数。
        },
        "speed": {
            "concurrent": 3,//作业并发数。
            "throttle": false //false代表不限流,下面的限流的速度不生效;true代表限流。
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Writer脚本参数

参数

描述

是否必选

默认值

defaultFS

Hadoop HDFS文件系统namenode节点地址,例如hdfs://127.0.0.1:9000公共资源组不支持Hadoop高级参数HA的配置,请新增和使用自定义数据集成资源组

fileType

文件的类型,目前仅支持您配置为textorcparquet

  • text:表示Hive中的存储表,TextFile文件格式。

  • orc:表示Hive中的压缩表,ORCFile文件格式。

  • parquet:表示普通Parquet File文件格式。

path

存储到Hadoop HDFS文件系统的路径信息,HDFS Writer会根据并发配置在path目录下写入多个文件。

为了与Hive表关联,请填写Hive表在HDFS上的存储路径。例如Hive上设置的数据仓库的存储路径为/user/hive/warehouse/,已建立数据库test表hello,则对应的存储路径为/user/hive/warehouse/test.db/hello

fileName

HDFS Writer写入时的文件名,实际执行时会在该文件名后添加随机的后缀作为每个线程写入实际文件名。

column

写入数据的字段,不支持对部分列写入。

为了与Hive中的表关联,需要指定表中所有字段名和字段类型,其中name指定字段名,type指定字段类型。

您可以指定column字段信息,配置如下。

"column": 
[
    {
        "name": "userName",
        "type": "string"
    },
    {
        "name": "age",
        "type": "long"
    }
]

是(如果filetype为parquet,此项无需填写)

writeMode

HDFS Writer写入前数据清理处理模式:

  • append:写入前不做任何处理,数据集成HDFS Writer直接使用filename写入,并保证文件名不冲突。

  • nonConflict:如果目录下有fileName前缀的文件,直接报错。

  • truncate:写入前清理fileName名称前缀匹配的所有文件。例如,"fileName": "abc",将清理对应目录所有abc开头的文件。

说明

Parquet格式文件不支持Append,所以只能是noConflict

fieldDelimiter

HDFS Writer写入时的字段分隔符,需要您保证与创建的Hive表的字段分隔符一致,否则无法在Hive表中查到数据。

说明

仅支持单字符分隔符,如果输入多字符将导致运行时报错。

是(如果filetype为parquet,此项无需填写)

compress

HDFS文件压缩类型,默认不填写,则表示没有压缩。

其中text类型文件支持gzip和bzip2压缩类型。

encoding

写文件的编码配置。

无压缩

parquetSchema

写Parquet格式文件时的必填项,用来描述目标文件的结构,所以此项当且仅当fileTypeparquet时生效,格式如下。

message MessageType名 {
是否必填, 数据类型, 列名;
......................;
}

配置项说明如下:

  • MessageType名:填写名称。

  • 是否必填:required表示非空,optional表示可为空。推荐全填optional。

  • 数据类型:Parquet文件支持BOOLEAN、INT32、INT64、INT96、FLOAT、DOUBLE、BINARY(如果是字符串类型,请填BINARY)和FIXED_LEN_BYTE_ARRAY等类型。

说明

每行列设置必须以分号结尾,最后一行也要写上分号。

示例如下。

message m {
optional int64 id;
optional int64 date_id;
optional binary datetimestring;
optional int32 dspId;
optional int32 advertiserId;
optional int32 status;
optional int64 bidding_req_num;
optional int64 imp;
optional int64 click_num;
}

hadoopConfig

hadoopConfig中可以配置与Hadoop相关的一些高级参数,例如HA的配置。公共资源组不支持Hadoop高级参数HA的配置,请新增和使用自定义数据集成资源组

"hadoopConfig":{
"dfs.nameservices": "testDfs",
"dfs.ha.namenodes.testDfs": "namenode1,namenode2",
"dfs.namenode.rpc-address.youkuDfs.namenode1": "",
"dfs.namenode.rpc-address.youkuDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
}

dataxParquetMode

针对Parquet文件进行同步的模式。使用fields支持array、map和struct等复杂类型。可选值包括fields和columns。

配置dataxParquetMode为fields时,支持hdfs over oss,即HDFS的存储为OSS,OSS的数据存储格式为parquet。此时您可以在hadoopConfig中增加OSS相关的参数,详情如下:

  • fs.oss.accessKeyId:访问OSS的AccessKeyID。

  • fs.oss.accessKeySecret:访问OSS的AccessKeySecret。

  • fs.oss.endpoint:访问OSS的endpoint。

访问OSS的示例如下所示。

```json
    "writer": {
    "name": "hdfswriter",
    "parameter": {
        "defaultFS": "oss://test-bucket",
        "fileType": "parquet",
        "path": "/datasets/oss_demo/kpt",
        "fileName": "test",
        "writeMode": "truncate",
        "encoding": "UTF-8",
        "hadoopConfig": {
            "fs.oss.accessKeyId": "the-access-id",
            "fs.oss.accessKeySecret": "the-access-key",
            "fs.oss.endpoint": "oss-cn-hangzhou.aliyuncs.com"
            },
            "parquetSchema": "message test {\n    required int64 id;\n    optional binary name (UTF8);\n    optional int64 gmt_create;\n    required group map_col (MAP) {\n        repeated group key_value {\n            required binary key (UTF8);\n            required binary value (UTF8);\n        }\n    }\n    required group array_col (LIST) {\n        repeated group list {\n            required binary element (UTF8);\n        }\n    }\n    required group struct_col {\n        required int64 id;\n        required binary name (UTF8);\n    }    \n}",
            "dataxParquetMode": "fields"
            }
        }
    ```

columns

haveKerberos

是否有Kerberos认证,默认为false。如果您配置为true,则配置项kerberosKeytabFilePathkerberosPrincipal为必填。

false

kerberosKeytabFilePath

Kerberos认证keytab文件的绝对路径。

如果haveKerberostrue,则必选。

kerberosPrincipal

Kerberos认证Principal名,如****/hadoopclient@**.*** 。如果haveKerberostrue,则必选。

由于Kerberos需要配置keytab认证文件的绝对路径,您需要在自定义资源组上使用此功能。配置示例如下。

"haveKerberos":true,
"kerberosKeytabFilePath":"/opt/datax/**.keytab",
"kerberosPrincipal":"**/hadoopclient@**.**"