본문으로 건너뛰기

S3 데이터 DataX 연동 방식

최근 업데이트 2026. 10. 05.

DataX 기반 플러그인: s3reader

DataX는 하나의 작업에서 동기화하는 모든 Object를 같은 데이터 테이블로 간주한다는 점에 유의하십시오. 사용자는 모든 Object가 같은 schema 정보에 맞는지 직접 보장해야 합니다.

JSON 예시:


{
"job": {
"setting": {
"speed": {
"byte": 10485760
}
},
"content": [
{
"reader": {
"name": "s3reader",
"parameter": {
"accessKey": "xx",
"secretKey": "xx",
"tempPath": "xxx",
"region": "xxxxx",
"bucket": "xxxxx",
"object": [
"aa/bb/*"
],
"compress": "gzip",
"column": [
{
"type": "string",
"index": 0
}
],
"encoding": "UTF-8",
"fieldDelimiter": "\t"
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "",
"print": true
}
}
}
]
}
}

현재 S3Reader가 지원하는 기능은 다음과 같습니다:

  1. TXT 파일 읽기만 지원하며, TXT의 schema는 2차원 테이블이어야 합니다.
  2. CSV와 유사한 형식의 파일과 사용자 지정 구분자를 지원합니다.
  3. 여러 타입의 데이터 읽기(String으로 표현), 열 잘라내기, 열 상수를 지원합니다
  4. 재귀 읽기와 파일 이름 필터링을 지원합니다.
  5. 텍스트 압축을 지원하며, 현재 지원하는 압축 형식은 zip, gzip, bzip2입니다. 단, 하나의 압축 파일에 여러 파일을 묶어 압축할 수는 없습니다.
  6. 여러 object를 동시에 읽을 수 있습니다.

파라미터 설명​

  • accessKey

    • 설명: S3의 accessKey
    • 필수: 예
    • 기본값: 없음
  • secretKey

    • 설명: S3의 secretKey
    • 필수: 예
    • 기본값: 없음
  • region

    • 설명: S3의 region
    • 필수: 예
    • 기본값: 없음
  • tempPath

    • 설명: 로컬 캐시의 절대 경로
    • 필수: 예
    • 기본값: 없음
    • 내결함성: 가져오지 못한 objectKey는 이 디렉터리의 FailedFile.txt에 기록됩니다
  • bucket

    • 설명: S3의 bucket
    • 필수: 예
    • 기본값: 없음
  • object

    • 설명: S3의 object 정보입니다. 여기에는 여러 Object를 입력할 수 있습니다.

    단일 S3 Object를 지정하면 S3Reader는 현재 단일 스레드로만 데이터를 추출할 수 있습니다.

    여러 S3 Object를 지정하면 S3Reader는 멀티스레드로 데이터를 추출할 수 있습니다. 동시 실행 스레드 수는 채널 수로 지정합니다.

    와일드카드 *를 지정하면 S3Reader는 여러 Object 정보를 탐색합니다.

    • 필수: 예
    • 기본값: 없음
  • column

    • 설명: 읽을 필드 목록입니다. type은 소스 데이터의 타입을 지정하고, index는 현재 열이 텍스트의 몇 번째 열에서 오는지 지정하며(0부터 시작), value는 현재 타입을 상수로 지정합니다. 이 경우 소스 파일에서 데이터를 읽지 않고 value 값에 따라 해당 열을 자동으로 생성합니다.

    기본적으로 사용자는 모든 데이터를 String 타입으로 읽을 수 있으며, 설정은 다음과 같습니다:

    "column": ["*"]

    사용자는 Column 필드 정보를 지정할 수 있으며, 설정은 다음과 같습니다:

    "column": [
    {
    "type": "long",
    "index": 0
    },
    {
    "type": "string",
    "value": "alibaba"
    }
    ]

    사용자가 Column 정보를 지정하는 경우 type은 반드시 입력해야 하며, index/value 중 하나를 반드시 선택해야 합니다.

    • 필수: 예
    • 기본값: 모두 string 타입으로 읽음
  • fieldDelimiter

    • 설명: 읽을 필드의 구분자
    • 필수: 예
    • 기본값: ,
  • compress

    • 설명: 텍스트 압축 타입입니다. 입력하지 않으면 기본적으로 압축하지 않은 것으로 간주합니다. 지원하는 압축 타입은 zip, gzip, bzip2입니다.
    • 필수: 아니요
    • 기본값: 압축하지 않음
  • encoding

    • 설명: 파일을 읽을 때의 인코딩 설정입니다. 현재 utf-8/gbk만 지원합니다.
    • 필수: 아니요
    • 기본값: utf-8
  • nullFormat

    • 설명: 텍스트 파일에서는 표준 문자열로 null(널 포인터)을 정의할 수 없으므로, DataX는 nullFormat으로 null로 표현할 수 있는 문자열을 정의합니다.

    예를 들어 사용자가 nullFormat="\N"으로 설정하면 소스 데이터가 "\N"일 때 DataX는 이를 null 필드로 간주합니다.

    • 필수: 아니요
    • 기본값: \N
  • skipHeader

    • 설명: CSV와 유사한 형식의 파일은 헤더가 제목으로 되어 있어 건너뛰어야 하는 경우가 있습니다. 기본적으로 건너뛰지 않습니다.
    • 필수: 아니요
    • 기본값: false
  • 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;//단일 열 길이를 100000자로 제한할지 여부
boolean skipEmptyRecords = true;//빈 줄 건너뛰기 여부
boolean captureRawRecord = true;

타입 변환​

S3 자체는 데이터 타입을 제공하지 않으며, 이 타입은 DataX S3Reader가 정의한 것입니다:

DataX 내부 타입S3 데이터 타입
LongLong
DoubleDouble
StringString
BooleanBoolean
DateDate

참고:

  • S3 Long 타입은 S3 텍스트에서 정수 값을 문자열로 표현한 형식을 말합니다. 예: "19901219".
  • S3 Double 타입은 S3 텍스트에서 Double 값을 문자열로 표현한 형식을 말합니다. 예: "3.1415".
  • S3 Boolean 타입은 S3 텍스트에서 Boolean 값을 문자열로 표현한 형식을 말합니다. 예: "true", "false". 대소문자를 구분하지 않습니다.
  • S3 Date 타입은 S3 텍스트에서 Date 값을 문자열로 표현한 형식을 말합니다. 예: "2014-12-31". Date는 format 형식을 지정할 수 있습니다.
이 문서가 도움이 되었나요?
이 페이지의 내용