S3 데이터 DataX 연동 방식
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가 지원하는 기능은 다음과 같습니다:
- TXT 파일 읽기만 지원하며, TXT의 schema는 2차원 테이블이어야 합니다.
- CSV와 유사한 형식의 파일과 사용자 지정 구분자를 지원합니다.
- 여러 타입의 데이터 읽기(String으로 표현), 열 잘라내기, 열 상수를 지원합니다
- 재귀 읽기와 파일 이름 필터링을 지원합니다.
- 텍스트 압축을 지원하며, 현재 지원하는 압축 형식은 zip, gzip, bzip2입니다. 단, 하나의 압축 파일에 여러 파일을 묶어 압축할 수는 없습니다.
- 여러 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 데이터 타입 |
|---|---|
| Long | Long |
| Double | Double |
| String | String |
| Boolean | Boolean |
| Date | Date |
참고:
- 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 형식을 지정할 수 있습니다.

