目录

1 定义输入类型

2 输出到json文件

3 输出到hive表  

4 读取HDFS文件

5 数据转换相关


1 定义输入类型

目前已实现从rest接⼝读取数据到字段、通过sax⽅式解析excel到多个字段。
1) rest输⼊默认配置如下:

{
"inputType":"rest",
"url":"",
"method":"get",
"headers": {}, "useSSL": false, "params": {}, "isUploadFile": false,
"files": ["D:/aa.txt","E:/c.jpg"]
"resultField":"result"
}

其中,

  • method,请求类型:get/post           headers,
  • 请求头,必须存在,可以为空对象:{}
  • useSSL,对于有些环境,请求https会报PKIX认证的错误,设置该参数为true绕过认证
  • params,post请求时传的参数,method为post的时候,参数params才有效
  • isUploadFile,post请求时判断是否上传⽂件,为true则为上传⽂件,此时需要填写files参数,指定文件路径列表
  • files,文件路径列表,post请求,isUploadFile为true时有效
  • resultField表示结果字段名称,此时不需要outputFields配置

2)excel输⼊的默认配置如下:

{
"inputType":"excel",
"filename":"", "header":true, 
"sheetNum": 0, 
"outputFields":[
    {"name":"col1", "type": "String"},
    {"name":"col2", "type": "String"},
    {"name":"col3", "type": "String"}
]
}

其中,

  • filename 为excel文件名,可以使".xls"或者".xlsx"格式,支持kettle命名参数或者变量形式:${varFileName} header为true表示有表头,为false表示没有表头
  • sheetNum为sheet编号,-1表示读取所有sheet,0表示读取第一个sheet,以此类推。整数类型,支持变量
  • outputFields是指定的输出字段列表,可以跟表头字段不一致
  • 如果只想使用excel的表头字段作为输出字段,那么可以将header设置true,同时将outputFields设置为[]或者删掉
  •  如果想自己指定字段的名称或者顺序,或者多个excel有部分文件字段补全等,则可以将header设置true,同时将outputFields设置为想要的内容即可,最后输出字段会根据表头字段进⾏映射,映射不上则值为null,输出字段的顺序跟outputFields指定的顺序一致
     

2 输出到json文件

支持将数据输出到json对象或者json数组。默认配置如下:

{
"outputType":"array",
"fileName":"your-json-filename.json", 
"fieldName":"data",
"batchSize": 1000
}

其中,

  • outputType可选“object”和“array”,分别表示输出为json对象和数组。
  • fieldName是输出为json对象所指定的名称,所有数据流以数组的形式作为value(形如{"data": []}),当outputType为object时有效。
  • batchSize表示多少行数据写一次文件。

3 输出到hive表  

 
支持输出到hive的textfile/orc/parquet三种类型表,也可以只输出到对应的三种格式hdfs文件,不创建hive表。默认配置如下:

{
"hadoopUserName":"hive",
"hdfsUrls":"192.168.100.11:8020;192.168.100.12:8020",
"hdfsFileName":"/tmp/hiveload/aaa.orc", 
"hiveDriver":"org.apache.hive.jdbc.HiveDriver", "hiveUrl":"jdbc:hive2://192.168.100.11:10000/default", 
"hiveUser":"hive",
"hivePassword":"hive", 
"createTable":"true",
"tableType":"orc", 
"hiveTable":"xuwl_orc",
"partitionField":[
    {"name":"dt", "type":"string"}
],
"partitionValue":[
    {"name":"dt", "value":"2019-12-04"}
],
"overwrite":"true",
"fieldSeparator":"\t", 
"lineSeparator":"\n"
}

其中

  • hadoopUserName为指定的hdfs⽂件属主,为了hive执⾏load命令能够有权限
  • hdfsUrls为HDFS的namenode节点,如果配置了HA,则把相应的节点都配上,以分号隔开hdfsFileName为存放hdfs⽂件名称
  • hiveDriver、hiveUrl、hiveUser、hivePassword为hiveServer2的jdbc连接信息createTable表示是否创建hive表,为字符串格式的"true"或者"false"
  • tableType可选[text/orc/parquet]三者之⼀hiveTable为最后的hive表名
  • partitionField为分区字段列表,多个分区字段按先后顺序指定,类型名称为hive数据类型partitionValue为分区字段的值,和分区字段顺序⼀致,value指定具体值
  • overwrite表示是否覆盖原表,为字符串格式的"true"或者"false"
  • fieldSeparator为列分隔符,lineSeparator为⾏分隔符,只在tableType为text时有效

注意:

该插件未包含hadoop和hive相关的jar包,如果之前没有添加可能报错,需根据⾃⼰集群版本添加相应的jar包到kettle/lib下,主要是hadoop-auth-2.6.0.jar、hadoop-common-2.6.0.jar、hadoop-hdfs-2.6.0.jar、hive-exec- 2.1.0.jar、hive-jdbc-1.1.0-cdh5.10.0.jar、protobuf-java-2.5.0.jar、htrace-core4-4.0.1-incubating.jar、fastjson-1.2.7.jar、servlet-api-2.5.jar等,如果还差看具体报错情况添加。 以上jar可以在kettle⾃带的bigdata插件⾥⾯或者⼤数据集群安装包⾥⾯找到。

4 读取HDFS文件

⽀持从HDFS读取单个text⽂件。默认配置如下:

{
"hdfsUrls":"10.6.1.19:8020;10.6.1.20:8020",
"fileName":"/tmp/aa.txt", 
"fileType":"text", 
"fieldSeparator":"\t", 
"lineSeparator":"\n", 
"outputFields":[
    {"name":"id", "type":"Integer"},
    {"name":"xm", "type": "String"},
    {"name":"age", "type": "String"},
    {"name":"title", "type": "String"}
]
}

其中,


  • hdfsUrls为HDFS的namenode节点,如果配置了HA,则把相应的节点都配上,以分号隔开fileName为HDFS⽂件名,⽬前只⽀持⽂件
  • fieldSeparator为列分隔符,lineSeparator为⾏分隔符
  • outputFields是指定的输出字段列表


注意:

该插件也需要hadoop相关的jar包,同前⾯的[输出到hive表]。

5 数据转换相关

⽀持中⽂简繁体转换,汉字转拼⾳,base64编码解码,MD5,sha256加密等。配置如下:

{
"changeConfig": [
{"inputField": "field1", "changeType": "sc2tc", "outputField": "field2"},
{"inputField": "field3", "changeType": "hz2py", "outputField": "field4"}
]
}

其中,inputField为需要转换的字段,outputField为转换后的新字段名,可以与inputField相同。 changeType为转换类型,含义如下:

  • sc2tc(简体转繁体)
  • tc2sc(繁体转简体)
  • hz2py(汉字转拼⾳)
  • base64Encode(base64加密)
  • base64Decode(base64解密)
  • MD5(MD5加密)
  • SHA256(SHA256加密)