# TaDataWriter 플러그인
# 1. 소개
TaDataWriter는 DataX가 데이터를 TA 클러스터로 전송할 수 있게 하며, 이 데이터는 TA의 수신 주소로 전송됩니다.
# 2. 기능 및 제한 사항
TaDataWriter는 DataX 프로토콜 데이터를 TA 클러스터의 내부 데이터로 변환할 수 있습니다. TaDataWriter는 다음과 같은 기능을 가지고 있습니다:
- TA 클러스터에만 데이터를 전송할 수 있습니다.
 - 데이터 압축을 지원합니다. 지원되는 압축 형식은 gzip, lzo, lz4, snappy입니다.
 - 다중 스레드 전송을 지원합니다.
 - TA 노드에서만 지원됩니다.
 
# 3. 기능 설명
# 3.1 샘플 구성
{
  "job": {
    "setting": {
      "speed": {
        "channel": 1
      }
    },
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "column": [
              {
                "value": "ABCDEFG-123-abc",
                "type": "string"
              },
              {
                "value": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
                "type": "string"
              },
              {
                "value": "login",
                "type": "string"
              },
              {
                "value": "2020-01-01 01:01:01",
                "type": "date"
              },
              {
                "value": "abcdefg",
                "type": "string"
              },
              {
                "value": "2019-08-08 08:08:08",
                "type": "date"
              },
              {
                "value": 123456,
                "type": "long"
              },
              {
                "value": true,
                "type": "bool"
              }
            ],
            "sliceRecordCount": 1000
          }
        },
        "writer": {
          "name": "ta-data-writer",
          "parameter": {
            "type": "track",
            "appid": "34c703a885014208a737911748a7b51c",
            "column": [
              {
                "index": "0",
                "colTargetName": "#account_id",
                "type": "string"
              },
              {
                "index": "1",
                "colTargetName": "#distinct_id"
              },
              {
                "index": "2",
                "colTargetName": "#event_name"
              },
              {
                "index": "3",
                "colTargetName": "#time",
                "type": "date",
                "dateFormat": "yyyy-MM-dd HH:mm:ss.SSS"
              },
              {
                "index": "4",
                "colTargetName": "testString",
                "type": "string"
              },
              {
                "index": "5",
                "colTargetName": "testDate",
                "type": "date",
                "dateFormat": "yyyy-MM-dd HH:mm:ss.SSS"
              },
              {
                "index": "6",
                "colTargetName": "testLong",
                "type": "number"
              },
              {
                "index": "7",
                "colTargetName": "testBoolean",
                "type": "boolean"
              },
              {
                "colTargetName": "add_clo",
                "value": "addFlag",
                "type": "string"
              }
            ]
          }
        }
      }
    ]
  }
}
# 3.2 파라미터 설명
- type 
- 설명: 작성되는 데이터 유형, user_set, track
 - 필수 여부: 예
 - 기본 값: 없음
 
 - appid 
- 설명: 프로젝트 appid
 - 필수 여부: 예
 - 기본 값: 없음
 
 - thread 
- 설명: 스레드 수
 - 필수 여부: 아니오
 - 기본 값: 3
 
 - compress 
- 설명: 텍스트 압축 유형. 기본적으로, 아무것도 입력하지 않으면 압축되지 않습니다. 지원되는 압축 유형은 gzip, lzo, lz4 및 snappy입니다.
 - 필수 여부: 아니오
 - 기본 값: 압축 없음
 
 - connType 
- 설명: 클러스터 내에서 데이터를 수신하는 방법, 수신기로 전송하거나 직접 Kafka로 전송
 - 필수 여부: 아니오
 - 기본 값: http
 
 - column 
- 설명: 필드 목록을 읽습니다. 
type은 데이터 유형을 지정하고,index는reader에 해당하는 현재 열을 지정합니다(0부터 시작).value는 현재 유형을 상수로 지정하며,reader에서 데이터를 읽지 않고value에 따라 자동으로 해당 열을 생성합니다. 
 - 설명: 필드 목록을 읽습니다. 
 
사용자는 다음과 같이 Column필드 정보를 지정할 수 있습니다:
[
  {
    "type": "Number",
    "colTargetName": "test_col", //generate column names corresponding to data
    "index": 0 //transfer the first column from reader to dataX to get the Number field
  },
  {
    "type": "string",
    "value": "testvalue",
    "colTargetName": "test_col" //generate the string field of testvalue from TaDataWriter as the current field
  },
  {
    "index": 0,
    "type": "date",
    "colTargetName": "testDate",
    "dateFormat": "yyyy-MM-dd HH:mm:ss.SSS"
  }
]
- 사용자 지정 Column 정보의 경우, 
index/value중 하나를 선택해야 하며type은 필수 사항이 아닙니다.date유형을 설정할 때dataFormat을 설정할 수 있습니다.- 필수 여부: 예
 - 기본 값: reader 유형에 의해 모두 읽음
 
 
# 3.3 유형 변환
유형은 TaDataWriter로 정의됩니다:
DataX internal type  |  TaDataWriter data type  | 
|---|---|
Int  |  Number  | 
Long  |  Number  | 
Double  |  Number  | 
String  |  String  | 
Boolean  |  Boolean  | 
Date  |  Date  | 
