日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

HDFS數(shù)據(jù)源

更新時(shí)間:

HDFS是一個(gè)分布式文件系統(tǒng),為您提供讀取和寫入HDFS雙向通道的功能,本文為您介紹DataWorks的HDFS數(shù)據(jù)同步的能力支持情況。

支持的版本

目前不支持阿里云文件存儲(chǔ)HDFS版。

使用限制

離線讀

使用HDFS Reader時(shí),請(qǐng)注意以下事項(xiàng):

  • 由于連通默認(rèn)資源組到HDFS的網(wǎng)絡(luò)鏈路比較復(fù)雜,建議您使用Serverless資源組(推薦)獨(dú)享數(shù)據(jù)集成資源組完成數(shù)據(jù)同步任務(wù)。您需要確保您的資源組具備HDFS的namenodedatanode的網(wǎng)絡(luò)訪問(wèn)能力。

  • HDFS默認(rèn)情況下,使用網(wǎng)絡(luò)白名單進(jìn)行數(shù)據(jù)安全。基于此種情況,建議您使用Serverless資源組(推薦)獨(dú)享數(shù)據(jù)集成資源組完成針對(duì)HDFS的數(shù)據(jù)同步任務(wù)。

  • 您通過(guò)腳本模式配置HDFS同步作業(yè),并不依賴HDFS數(shù)據(jù)源網(wǎng)絡(luò)連通性測(cè)試通過(guò),針對(duì)此類錯(cuò)誤您可以臨時(shí)忽略。

  • 數(shù)據(jù)集成同步進(jìn)程以admin賬號(hào)啟動(dòng),您需要確保操作系統(tǒng)的admin賬號(hào)具備訪問(wèn)相應(yīng)HDFS文件的讀寫權(quán)限,若無(wú)權(quán)限,可以轉(zhuǎn)腳本模式,添加"hdfsUsername": "有權(quán)限的用戶"

HDFS Reader支持以下功能:

  • 支持TextFile、ORCFile、rcfile、sequence file、csv和parquet格式的文件,且要求文件內(nèi)容存放的是一張邏輯意義上的二維表。

  • 支持多種類型數(shù)據(jù)讀取(使用String表示),支持列裁剪,支持列常量。

  • 支持遞歸讀取、支持正則表達(dá)式*?

  • 支持ORCFile數(shù)據(jù)壓縮,目前支持SNAPPYZLIB兩種壓縮方式。

  • 支持SequenceFile數(shù)據(jù)壓縮,目前支持lZO壓縮方式。

  • 多個(gè)File可以支持并發(fā)讀取。

  • CSV類型支持壓縮格式有g(shù)zip、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測(cè)試環(huán)境中寫入正常。

重要

HDFS Reader暫不支持單個(gè)File多線程并發(fā)讀取,此處涉及到單個(gè)File內(nèi)部切分算法。

離線寫

使用HDFS Writer時(shí),請(qǐng)注意以下事項(xiàng):

  • 目前HDFS Writer僅支持TextFile、ORCFile和ParquetFile三種格式的文件,且文件內(nèi)容存放的必須是一張邏輯意義上的二維表。

  • 由于HDFS是文件系統(tǒng),不存在schema的概念,因此不支持對(duì)部分列寫入。

  • 目前不支持DECIMAL、BINARY、ARRAYS、MAPS、STRUCTS和UNION等Hive數(shù)據(jù)類型。

  • 對(duì)于Hive分區(qū)表目前僅支持一次寫入單個(gè)分區(qū)。

  • 對(duì)于TextFile,需要保證寫入HDFS文件的分隔符與在Hive上創(chuàng)建表時(shí)的分隔符一致,從而實(shí)現(xiàn)寫入HDFS數(shù)據(jù)與Hive表字段關(guān)聯(lián)。

  • 目前插件中的Hive版本為1.1.1,Hadoop版本為2.7.1(Apache為適配JDK1.7)。在Hadoop2.5.0、Hadoop2.6.0和Hive1.2.0測(cè)試環(huán)境中寫入正常。

  • HDFS Writer僅支持使用獨(dú)享數(shù)據(jù)集成資源組

實(shí)現(xiàn)過(guò)程

HDFS Writer的實(shí)現(xiàn)過(guò)程如下所示:

  1. 根據(jù)您指定的path,創(chuàng)建一個(gè)HDFS文件系統(tǒng)上不存在的臨時(shí)目錄。

    創(chuàng)建規(guī)則:path_隨機(jī)

  2. 將讀取的文件寫入這個(gè)臨時(shí)目錄。

  3. 全部寫入后,將臨時(shí)目錄下的文件移動(dòng)到您指定的目錄(在創(chuàng)建文件時(shí)保證文件名不重復(fù))。

  4. 刪除臨時(shí)目錄。如果在此過(guò)程中,發(fā)生網(wǎng)絡(luò)中斷等情況造成無(wú)法與HDFS建立連接,需要您手動(dòng)刪除已經(jīng)寫入的文件和臨時(shí)目錄。

說(shuō)明

數(shù)據(jù)同步需要使用Admin賬號(hào),并且有訪問(wèn)相應(yīng)文件的讀寫權(quán)限。

支持的字段類型

離線讀

由于文件表的元數(shù)據(jù)信息由Hive維護(hù),并存放在Hive自己維護(hù)的元數(shù)據(jù)庫(kù)(如MySQL)中。目前HDFS Reader不支持對(duì)Hive元數(shù)據(jù)的數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)查詢,因此您在進(jìn)行類型轉(zhuǎn)換時(shí),必須指定數(shù)據(jù)類型。

RCFile、ParquetFile、ORCFile、TextFile和SequenceFile中的類型,會(huì)默認(rèn)轉(zhuǎn)為數(shù)據(jù)集成支持的內(nèi)部類型,如下表所示。

類型分類

數(shù)據(jù)集成column配置類型

Hive數(shù)據(jù)類型

整數(shù)類

long

tinyint、smallint、int和bigint

浮點(diǎn)類

double

float和double

字符串類

string

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

日期時(shí)間類

date

date和timestamp

布爾類

boolean

boolean

說(shuō)明
  • long:HDFS文件中的整型類型數(shù)據(jù),例如123456789

  • double:HDFS文件中的浮點(diǎn)類型數(shù)據(jù),例如3.1415

  • bool:HDFS文件中的布爾類型數(shù)據(jù),例如truefalse,不區(qū)分大小寫。

  • date:HDFS文件中的時(shí)間類型數(shù)據(jù),例如2014-12-31 00:00:00

Hive支持的數(shù)據(jù)類型TIMESTAMP可以精確到納秒級(jí)別,所以TextFile、ORCFile中TIMESTAMP存放的數(shù)據(jù)類似于2015-08-21 22:40:47.397898389。如果轉(zhuǎn)換的類型配置為數(shù)據(jù)集成的DATE,轉(zhuǎn)換之后會(huì)導(dǎo)致納秒部分丟失。所以如果需要保留納秒部分的數(shù)據(jù),請(qǐng)配置轉(zhuǎn)換類型為數(shù)據(jù)集成的字符串類型。

離線寫

HDFS Writer提供向HDFS文件系統(tǒng)指定路徑中寫入TextFile文件、 ORCFile文件以及ParquetFile格式文件,文件內(nèi)容可以與Hive中的表關(guān)聯(lián)。目前HDFS Writer支持大部分Hive類型,請(qǐng)注意檢查您的數(shù)據(jù)類型。

HDFS Writer針對(duì)Hive數(shù)據(jù)類型的轉(zhuǎn)換列表,如下所示。

說(shuō)明

column的配置需要和Hive表對(duì)應(yīng)的列類型保持一致。

類型分類

數(shù)據(jù)庫(kù)數(shù)據(jù)類型

整數(shù)類

TINYINT、SMALLINT、INT和BIGINT

浮點(diǎn)類

FLOAT和DOUBLE

字符串類

CHAR、VARCHAR和STRING

布爾類

BOOLEAN

日期時(shí)間類

DATE和TIMESTAMP

創(chuàng)建數(shù)據(jù)源

在進(jìn)行數(shù)據(jù)同步任務(wù)開發(fā)時(shí),您需要在DataWorks上創(chuàng)建一個(gè)對(duì)應(yīng)的數(shù)據(jù)源,操作流程請(qǐng)參見創(chuàng)建并管理數(shù)據(jù)源詳細(xì)的配置參數(shù)解釋可在配置界面查看對(duì)應(yīng)參數(shù)的文案提示

數(shù)據(jù)同步任務(wù)開發(fā)

數(shù)據(jù)同步任務(wù)的配置入口和通用配置流程可參見下文的配置指導(dǎo)。

單表離線同步任務(wù)配置指導(dǎo)

附錄:腳本Demo與參數(shù)說(shuō)明

離線任務(wù)腳本配置方式

如果您配置離線任務(wù)時(shí)使用腳本模式的方式進(jìn)行配置,您需要按照統(tǒng)一的腳本格式要求,在任務(wù)腳本中編寫相應(yīng)的參數(shù),詳情請(qǐng)參見通過(guò)腳本模式配置離線同步任務(wù),以下為您介紹腳本模式下數(shù)據(jù)源的參數(shù)配置詳情。

Reader腳本Demo

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "hdfs",//插件名
            "parameter": {
                "path": "",//要讀取的文件路徑
                "datasource": "",//數(shù)據(jù)源
                "hadoopConfig":{
                "dfs.data.transfer.protection": "integrity",
               "dfs.datanode.use.datanode.hostname" :"true",
                "dfs.client.use.datanode.hostname":"true"
                 },
                "column": [
                    {
                        "index": 0,//序列號(hào),index從0開始(下標(biāo)索引從0開始計(jì)數(shù)),表示從本地文本文件第一列開始讀取數(shù)據(jù)。
                        "type": "string"http://字段類型
                    },
                    {
                        "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": ""http://文本類型
            },
            "name": "Reader",
            "category": "reader"
        },
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""http://錯(cuò)誤記錄數(shù)
        },
        "speed": {
            "concurrent": 3,//作業(yè)并發(fā)數(shù)
            "throttle": true //當(dāng)throttle值為false時(shí),mbps參數(shù)不生效,表示不限流;當(dāng)throttle值為true時(shí),表示限流。
            "mbps":"12"http://限流
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

parquetSchema的HDFS Reader配置示例如下。

說(shuō)明
  • fileType配置項(xiàng)必須設(shè)置為parquet

  • 如果您要讀取parquet文件中的部分列,需在parquetSchema配置項(xiàng)中,指定完整schema結(jié)構(gòu)信息,并在column中根據(jù)下標(biāo),篩選需要的同步列進(jìn)行列映射。

"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腳本參數(shù)

參數(shù)

描述

是否必選

默認(rèn)值

path

要讀取的文件路徑,如果要讀取多個(gè)文件,可以使用簡(jiǎn)單正則表達(dá)式匹配,例如/hadoop/data_201704*,如果文件以時(shí)間命名且較為規(guī)律,則可以結(jié)合調(diào)度參數(shù)使用,調(diào)度參數(shù)將根據(jù)業(yè)務(wù)時(shí)間動(dòng)態(tài)替換,詳情請(qǐng)參見調(diào)度參數(shù)支持的格式

  • 當(dāng)指定單個(gè)HDFS文件時(shí),HDFS Reader暫時(shí)只能使用單線程進(jìn)行數(shù)據(jù)抽取。

  • 當(dāng)指定多個(gè)HDFS文件時(shí),HDFS Reader支持使用多線程進(jìn)行數(shù)據(jù)抽取,線程并發(fā)數(shù)通過(guò)作業(yè)并發(fā)數(shù)concurrent指定。

    說(shuō)明

    實(shí)際啟動(dòng)的并發(fā)數(shù)是您的HDFS待讀取文件數(shù)量和您配置作業(yè)并發(fā)數(shù)兩者中的小者。

  • 當(dāng)指定通配符,HDFS Reader嘗試遍歷出多個(gè)文件信息。例如指定/代表讀取/目錄下所有的文件,指定/bazhen/代表讀取bazhen目錄下游所有的文件。HDFS Reader目前只支持*?作為文件通配符,語(yǔ)法類似于通常的Linux命令行文件通配符。

請(qǐng)注意以下事項(xiàng):

  • 數(shù)據(jù)集成會(huì)將一個(gè)同步作業(yè)所有待讀取文件視作同一張數(shù)據(jù)表。您必須自己保證所有的File能夠適配同一套schema信息,并且提供給數(shù)據(jù)集成權(quán)限可讀。

  • 注意分區(qū)讀取:Hive在建表時(shí),可以指定分區(qū)。例如創(chuàng)建分區(qū)partition(day="20150820", hour="09"),對(duì)應(yīng)的HDFS文件系統(tǒng)中,相應(yīng)的表的目錄下則會(huì)多出/20150820和/09兩個(gè)目錄且/20150820是/09的父目錄。

    分區(qū)會(huì)列成相應(yīng)的目錄結(jié)構(gòu),在按照某個(gè)分區(qū)讀取某個(gè)表所有數(shù)據(jù)時(shí),則只需配置好JSON中path的值即可。例如需要讀取表名叫mytable01下分區(qū)day為20150820這一天的所有數(shù)據(jù),則配置如下。

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

無(wú)

defaultFS

Hadoop HDFS文件系統(tǒng)namenode節(jié)點(diǎn)地址。公共資源組不支持Hadoop高級(jí)參數(shù)HA的配置。

無(wú)

fileType

文件的類型,目前僅支持您配置為TEXTORCRCSEQCSVparquet。HDFS Reader能夠自動(dòng)識(shí)別文件的類型,并使用對(duì)應(yīng)文件類型的讀取策略。HDFS Reader在做數(shù)據(jù)同步前,會(huì)檢查您配置的路徑下所有需要同步的文件格式是否和fileType一致,如果不一致任務(wù)會(huì)失敗。

fileType可以配置的參數(shù)值列表如下所示:

  • TEXT:表示TextFile文件格式。

  • ORC:表示ORCFile文件格式。

  • RC:表示RCFile文件格式。

  • SEQ:表示SequenceFile文件格式。

  • CSV:表示普通HDFS文件格式(邏輯二維表)。

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

由于TextFile和ORCFile是兩種不同的文件格式,所以HDFS Reader對(duì)這兩種文件的解析方式也存在差異,這種差異導(dǎo)致Hive支持的復(fù)雜復(fù)合類型(例如map、array、struct和union)在轉(zhuǎn)換為數(shù)據(jù)集成支持的String類型時(shí),轉(zhuǎn)換的結(jié)果格式略有差異,以map類型為例:

  • ORCFile map類型經(jīng)HDFS Reader解析,轉(zhuǎn)換成數(shù)據(jù)集成支持的STRING類型后,結(jié)果為{job=80, team=60, person=70}

  • TextFile map類型經(jīng)HDFS Reader解析,轉(zhuǎn)換成數(shù)據(jù)集成支持的STRING類型后,結(jié)果為{job:80, team:60, person:70}

如上述轉(zhuǎn)換結(jié)果所示,數(shù)據(jù)本身沒(méi)有變化,但是表示的格式略有差異。所以如果您配置的文件路徑中要同步的字段在Hive中是復(fù)合類型的話,建議配置統(tǒng)一的文件格式 。

最佳實(shí)踐建議:

  • 如果需要統(tǒng)一復(fù)合類型解析出來(lái)的格式,建議您在Hive客戶端將TextFile格式的表導(dǎo)成ORCFile格式的表。

  • 如果是Parquet文件格式,后面的parquetSchema則必填,此屬性用來(lái)說(shuō)明要讀取的Parquet格式文件的格式。

對(duì)于您指定的column信息,type必須填寫,indexvalue必須選擇其一。

無(wú)

column

讀取字段列表,type指定源數(shù)據(jù)的類型,index指定當(dāng)前列來(lái)自于文本第幾列(以0開始),value指定當(dāng)前類型為常量。不從源頭文件讀取數(shù)據(jù),而是根據(jù)value值自動(dòng)生成對(duì)應(yīng)的列。默認(rèn)情況下,您可以全部按照STRING類型讀取數(shù)據(jù),配置為"column": ["*"]

您也可以指定column字段信息(文件數(shù)據(jù)列和常量列配置二選一),配置如下。

{
  "type": "long",
  "index": 0
  //從本地文件文本第一列(下標(biāo)索引從0開始計(jì)數(shù))獲取INT字段,index表示從數(shù)據(jù)文件中獲取列數(shù)據(jù)。
},
{
  "type": "string",
  "value": "alibaba"
  //HDFS Reader內(nèi)部生成alibaba的字符串字段作為當(dāng)前字段,value表示常量列。
}
說(shuō)明
  • index從0開始(下標(biāo)索引從0開始計(jì)數(shù)),表示從本地文本文件第一列開始讀取數(shù)據(jù)。

  • 建議您指定待讀取的每一列數(shù)據(jù)的下標(biāo)和類型,避免配置column *通配符。

無(wú)

fieldDelimiter

讀取的字段分隔符,HDFS Reader在讀取TextFile數(shù)據(jù)時(shí),需要指定字段分割符,如果不指定默認(rèn)為逗號(hào)(,)。HDFS Reader在讀取ORCFile時(shí),您無(wú)需指定字段分割符,Hive本身的默認(rèn)分隔符為\u0001

說(shuō)明
  • 如果您想將每一行作為目的端的一列,分隔符請(qǐng)使用行內(nèi)容不存在的字符。例如,不可見字符\u0001

  • 分隔符不能使用\n

,

encoding

讀取文件的編碼配置。

utf-8

nullFormat

文本文件中無(wú)法使用標(biāo)準(zhǔn)字符串定義null(空指針),數(shù)據(jù)集成提供nullFormat定義哪些字符串可以表示為null。

例如您配置nullFormat:"null",如果源頭數(shù)據(jù)是null,數(shù)據(jù)集成會(huì)將其視作null字段。

說(shuō)明

字符串的null(n、u、l、l四個(gè)字符)和實(shí)際的null不同。

無(wú)

compress

當(dāng)fileType(文件類型)為csv下的文件壓縮方式,目前僅支持gzip、bz2、zip、lzo、lzo_deflate、hadoop-snappy和framing-snappy壓縮。

說(shuō)明
  • LZO存在lzolzo_deflate兩種壓縮格式。您在配置時(shí),請(qǐng)注意不要配置錯(cuò)誤。

  • 由于snappy目前沒(méi)有統(tǒng)一的stream format,數(shù)據(jù)集成目前僅支持最主流的hadoop-snappy(hadoop上的snappy stream format)和framing-snappy(google建議的snappy stream format)。

  • ORC文件類型下無(wú)需填寫。

無(wú)

parquetSchema

如果您的文件格式類型為Parquet,在配置column配置項(xiàng)的基礎(chǔ)上,您還需配置parquetSchema,具體表示parquet存儲(chǔ)的類型說(shuō)明。您需要確保填寫parquetSchema后,整體配置符合JSON語(yǔ)法。

message MessageType名 {
是否必填, 數(shù)據(jù)類型, 列名;
......................;
}

parquetSchema的配置格式說(shuō)明如下:

  • MessageType名:填寫名稱。

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

  • 數(shù)據(jù)類型:Parquet文件支持BOOLEAN、Int32、Int64、Int96、FLOAT、DOUBLE、BINARY(如果是字符串類型,請(qǐng)?zhí)頑INARY)和fixed_len_byte_array類型。

  • 每行列設(shè)置必須以分號(hào)結(jié)尾,最后一行也要寫上分號(hào)。

配置示例如下所示。

"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; }"

無(wú)

csvReaderConfig

讀取CSV類型文件參數(shù)配置,Map類型。讀取CSV類型文件使用的CsvReader進(jìn)行讀取,會(huì)有很多配置,不配置則使用默認(rèn)值。

常見配置如下所示。

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

所有配置項(xiàng)及默認(rèn)值,配置時(shí)csvReaderConfig的map中請(qǐng)嚴(yán)格按照以下字段名字進(jìn)行配置。

boolean caseSensitive = true;
char textQualifier = 34;
boolean trimWhitespace = true;
boolean useTextQualifier = true;//是否使用csv轉(zhuǎn)義字符。
char delimiter = 44;//分隔符
char recordDelimiter = 0;
char comment = 35;
boolean useComments = false;
int escapeMode = 1;
boolean safetySwitch = true;//單列長(zhǎng)度是否限制100,000字符。
boolean skipEmptyRecords = true;//是否跳過(guò)空行。
boolean captureRawRecord = true;

無(wú)

hadoopConfig

hadoopConfig中可以配置與Hadoop相關(guān)的一些高級(jí)參數(shù),例如HA的配置。公共資源組不支持Hadoop高級(jí)參數(shù)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"
}
說(shuō)明
"hadoopConfig":{ "dfs.data.transfer.protection": "integrity", "dfs.datanode.use.datanode.hostname" :"true", "dfs.client.use.datanode.hostname":"true" }

上述參數(shù)為hdfs reader插件中配置的kerberos認(rèn)證。如果您在HDFS數(shù)據(jù)源已經(jīng)配置了kerberos認(rèn)證,則在hdfs reader插件中無(wú)需重復(fù)配置。配置HDFS數(shù)據(jù)源,詳情請(qǐng)參見配置HDFS數(shù)據(jù)源

無(wú)

haveKerberos

是否有Kerberos認(rèn)證,默認(rèn)為false。例如用戶配置為true,則配置項(xiàng)kerberosKeytabFilePath和kerberosPrincipal為必填。

false

kerberosKeytabFilePath

Kerberos認(rèn)證keytab文件的絕對(duì)路徑。如果haveKerberos為true,則必選。

無(wú)

kerberosPrincipal

Kerberos認(rèn)證Principal名,如****/hadoopclient@**.*** 。如果haveKerberos為true,則必選。

說(shuō)明

由于Kerberos需要配置keytab認(rèn)證文件的絕對(duì)路徑,您需要在資源組上使用此功能。配置示例如下。

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

無(wú)

Writer腳本Demo

{
    "type": "job",
    "version": "2.0",//版本號(hào)。
    "steps": [
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "hdfs",//插件名。
            "parameter": {
                "path": "",//存儲(chǔ)到Hadoop HDFS文件系統(tǒng)的路徑信息。
                "fileName": "",//HDFS Writer寫入時(shí)的文件名。
                "compress": "",//HDFS文件壓縮類型。
                "datasource": "",//數(shù)據(jù)源。
                "column": [
                    {
                        "name": "col1",//字段名。
                        "type": "string"http://字段類型。
                    },
                    {
                        "name": "col2",
                        "type": "int"
                    },
                    {
                        "name": "col3",
                        "type": "double"
                    },
                    {
                        "name": "col4",
                        "type": "boolean"
                    },
                    {
                        "name": "col5",
                        "type": "date"
                    }
                ],
                "writeMode": "",//寫入模式。
                "fieldDelimiter": ",",//列分隔符。
                "encoding": "",//編碼格式。
                "fileType": "text"http://文本類型。
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""http://錯(cuò)誤記錄數(shù)。
        },
        "speed": {
            "concurrent": 3,//作業(yè)并發(fā)數(shù)。
            "throttle": false //false代表不限流,下面的限流的速度不生效;true代表限流。
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Writer腳本參數(shù)

參數(shù)

描述

是否必選

默認(rèn)值

defaultFS

Hadoop HDFS文件系統(tǒng)namenode節(jié)點(diǎn)地址,例如hdfs://127.0.0.1:9000公共資源組不支持Hadoop高級(jí)參數(shù)HA的配置,請(qǐng)新增和使用自定義數(shù)據(jù)集成資源組

無(wú)

fileType

文件的類型,目前僅支持您配置為textorcparquet

  • text:表示Hive中的存儲(chǔ)表,TextFile文件格式。

  • orc:表示Hive中的壓縮表,ORCFile文件格式。

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

無(wú)

path

存儲(chǔ)到Hadoop HDFS文件系統(tǒng)的路徑信息,HDFS Writer會(huì)根據(jù)并發(fā)配置在path目錄下寫入多個(gè)文件。

為了與Hive表關(guān)聯(lián),請(qǐng)?zhí)顚慔ive表在HDFS上的存儲(chǔ)路徑。例如Hive上設(shè)置的數(shù)據(jù)倉(cāng)庫(kù)的存儲(chǔ)路徑為/user/hive/warehouse/,已建立數(shù)據(jù)庫(kù)test表hello,則對(duì)應(yīng)的存儲(chǔ)路徑為/user/hive/warehouse/test.db/hello

無(wú)

fileName

HDFS Writer寫入時(shí)的文件名,實(shí)際執(zhí)行時(shí)會(huì)在該文件名后添加隨機(jī)的后綴作為每個(gè)線程寫入實(shí)際文件名。

無(wú)

column

寫入數(shù)據(jù)的字段,不支持對(duì)部分列寫入。

為了與Hive中的表關(guān)聯(lián),需要指定表中所有字段名和字段類型,其中name指定字段名,type指定字段類型。

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

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

是(如果filetype為parquet,此項(xiàng)無(wú)需填寫)

無(wú)

writeMode

HDFS Writer寫入前數(shù)據(jù)清理處理模式:

  • append:寫入前不做任何處理,數(shù)據(jù)集成HDFS Writer直接使用filename寫入,并保證文件名不沖突。

  • nonConflict:如果目錄下有fileName前綴的文件,直接報(bào)錯(cuò)。

  • truncate:寫入前清理fileName名稱前綴匹配的所有文件。例如,"fileName": "abc",將清理對(duì)應(yīng)目錄所有abc開頭的文件。

說(shuō)明

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

無(wú)

fieldDelimiter

HDFS Writer寫入時(shí)的字段分隔符,需要您保證與創(chuàng)建的Hive表的字段分隔符一致,否則無(wú)法在Hive表中查到數(shù)據(jù)。

說(shuō)明

僅支持單字符分隔符,如果輸入多字符將導(dǎo)致運(yùn)行時(shí)報(bào)錯(cuò)。

是(如果filetype為parquet,此項(xiàng)無(wú)需填寫)

無(wú)

compress

HDFS文件壓縮類型,默認(rèn)不填寫,則表示沒(méi)有壓縮。

其中text類型文件支持gzip和bzip2壓縮類型。

無(wú)

encoding

寫文件的編碼配置。

無(wú)壓縮

parquetSchema

寫Parquet格式文件時(shí)的必填項(xiàng),用來(lái)描述目標(biāo)文件的結(jié)構(gòu),所以此項(xiàng)當(dāng)且僅當(dāng)fileTypeparquet時(shí)生效,格式如下。

message MessageType名 {
是否必填, 數(shù)據(jù)類型, 列名;
......................;
}

配置項(xiàng)說(shuō)明如下:

  • MessageType名:填寫名稱。

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

  • 數(shù)據(jù)類型:Parquet文件支持BOOLEAN、INT32、INT64、INT96、FLOAT、DOUBLE、BINARY(如果是字符串類型,請(qǐng)?zhí)頑INARY)和FIXED_LEN_BYTE_ARRAY等類型。

說(shuō)明

每行列設(shè)置必須以分號(hào)結(jié)尾,最后一行也要寫上分號(hào)。

示例如下。

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;
}

無(wú)

hadoopConfig

hadoopConfig中可以配置與Hadoop相關(guān)的一些高級(jí)參數(shù),例如HA的配置。公共資源組不支持Hadoop高級(jí)參數(shù)HA的配置,請(qǐng)新增和使用自定義數(shù)據(jù)集成資源組

"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"
}

無(wú)

dataxParquetMode

針對(duì)Parquet文件進(jìn)行同步的模式。使用fields支持array、map和struct等復(fù)雜類型。可選值包括fields和columns。

配置dataxParquetMode為fields時(shí),支持hdfs over oss,即HDFS的存儲(chǔ)為OSS,OSS的數(shù)據(jù)存儲(chǔ)格式為parquet。此時(shí)您可以在hadoopConfig中增加OSS相關(guān)的參數(shù),詳情如下:

  • fs.oss.accessKeyId:訪問(wèn)OSS的AccessKeyID。

  • fs.oss.accessKeySecret:訪問(wèn)OSS的AccessKeySecret。

  • fs.oss.endpoint:訪問(wèn)OSS的endpoint。

訪問(wèn)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認(rèn)證,默認(rèn)為false。如果您配置為true,則配置項(xiàng)kerberosKeytabFilePathkerberosPrincipal為必填。

false

kerberosKeytabFilePath

Kerberos認(rèn)證keytab文件的絕對(duì)路徑。

如果haveKerberostrue,則必選。

無(wú)

kerberosPrincipal

Kerberos認(rèn)證Principal名,如****/hadoopclient@**.*** 。如果haveKerberostrue,則必選。

由于Kerberos需要配置keytab認(rèn)證文件的絕對(duì)路徑,您需要在自定義資源組上使用此功能。配置示例如下。

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

無(wú)