command line interfaceからFTP data connectorを使用することもできます。次の手順は、CLIを使用してデータをインポートする方法を示しています。
最新のTreasure Data Toolbeltをインストールします。
$ td --version
0.11.10次の例に示すように、Adobe AnalyticsのSFTP詳細を使用してseed.ymlを準備します。Public / Private Key PairとPasswordの2つのauthentication methodsをサポートしています。
次の内容でseed.ymlを作成します。
in:
type: adobe_analytics
host: HOST
port: <PORT, default is 22>
user: USER
secret_key_file:
content: |
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC...
...
-----END RSA PRIVATE KEY-----
secret_key_passphrase: PASSPHRASE
user_directory_is_root: true
timeout: 600
path_prefix: /path/to/sample
out:
mode: append
exec: {}secret_key_fileはOpenSSH formatを必要とします。
次の内容でseed.ymlを作成します。
in:
type: adobe_analytics
host: HOST
port: <PORT, default is 22>
auth_method: password
user: USER
password: PASSWORD
user_directory_is_root: true
timeout: 600
path_prefix: /path/to/sample
out:
mode: append
exec: {}passwordで次の特殊文字を使用できます: "#$!*@"
proxyを使用している場合は、次のように追加情報を追加します:
in:
type: adobe_analytics
host: HOST
port: <PORT, default is 22>
....
proxy:
type: http
host: PROXY_HOST
port: PROXY_PORT
user: PROXY_USER
password: PROXY_PASSWORD
command: SOMETHING COMMAND IF NEEDEDAdobe AnalyticsのData Connectorは、指定されたprefixに一致するすべてのファイルをインポートします(例: path_prefix: path/to/sample_ –> path/to/sample_201501.csv.gz、path/to/sample_201502.csv.gz、…、path/to/sample_201505.csv.gz)。
利用可能なout modesの詳細については、Appendixを参照してください。
connector:guessを使用します。このコマンドは、source fileを自動的に読み取り、file formatを評価(ロジックを使用して推測)します。
$ td connector:guess seed.yml -o load.ymlload.ymlを開くと、file formats、encodings、column names、typesを含む推測されたfile format定義が表示されます。この例では、csvファイルをロードしようとしています。
in:
type: adobe_analytics
host: HOST
port: <PORT, default is 22>
user: USER
secret_key_file:
content: |
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC...
...
-----END RSA PRIVATE KEY-----
secret_key_passphrase: PASSPHRASE
user_directory_is_root: true
timeout: 600
path_prefix: /path/to/sample
parser:
skip_header_lines: 1
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
columns:
- {name: id, type: long}
- {name: account, type: long}
- {name: time, type: timestamp, format: "%Y-%m-%d %H:%M:%S"}
- {name: purchase, type: timestamp, format: "%Y%m%d"}
- {name: comment, type: string}
- {name: json_column, type: json}
out:
mode: append
exec: {}その後、previewコマンドを使用して、システムがファイルをどのように解析するかをプレビューできます。
$ td connector:preview load.yml
+-------+---------+----------+---------------------+
| id | company | customer | created_at |
+-------+---------+----------+---------------------+
| 11200 | AA Inc. | David | 2015-03-31 06:12:37 |
| 20313 | BB Imc. | Tom | 2015-04-01 01:00:07 |
| 32132 | CC Inc. | Fernando | 2015-04-01 10:33:41 |
| 40133 | DD Inc. | Cesar | 2015-04-02 05:12:32 |
| 93133 | EE Inc. | Jake | 2015-04-02 14:11:13 |
+-------+---------+----------+---------------------+guessコマンドは、source dataファイルに3行以上、2カラム以上が必要です。これは、source dataのsample rowsを使用してcolumn定義を推測するためです。
システムがcolumn nameまたはcolumn typeを予期せず検出した場合は、load.ymlを直接変更して再度プレビューします。
現在、Data Connectorは"boolean"、"long"、"double"、"string"、"timestamp"タイプの解析をサポートしています。
また、data load jobを実行する前に、local databaseとtableを作成する必要があります。次の手順に従ってください:
td database:create td_sample_db
td table:create td_sample_db td_sample_tableload jobを送信します。データのサイズによっては数時間かかる場合があります。データを保存するTreasure Dataのdatabaseとtableを指定します。
--time-columnオプションを指定することをお勧めします。Treasure Dataのstorageは時間でパーティショニングされているためです(data partitioningを参照)。オプションが指定されていない場合、data connectorは最初のlongまたはtimestamp columnをpartitioning timeとして選択します。--time-columnで指定されたcolumnのタイプは、longまたはtimestampタイプのいずれかである必要があります。
データにtime columnがない場合は、add_time filter optionを使用してtime columnを追加できます。詳細については、add_time filter pluginを参照してください。
td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_atconnector:issueコマンドは、*database(td_sample_db)とtable(td_sample_table)*がすでに作成されていることを前提としています。databaseまたはtableがTDに存在しない場合、connector:issueコマンドは失敗するため、databaseとtableを手動で作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してdatabaseとtableを自動作成します:
td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-tableData Connectorはサーバー側でレコードをソートしません。time-basedパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。
timeというフィールドがある場合は、--time-columnオプションを指定する必要はありません。
$ td connector:issue load.yml --database td_sample_db --table td_sample_tableincremental Adobe AnalyticsのSFTPファイルインポートのために、定期的なData Connector実行をスケジュールできます。高可用性を確保するために、schedulerを慎重に設定しています。この機能を使用することで、ローカルdata center上でcron daemonを使用する必要がなくなります。
scheduled importの場合、Adobe AnalyticsのData Connectorは、指定されたprefixに一致するすべてのファイルを最初にインポートし(例: path_prefix: path/to/sample_ –> path/to/sample_201501.csv.gz、path/to/sample_201502.csv.gz、…、path/to/sample_201505.csv.gz)、次回の実行のためにlast path(path/to/sample_201505.csv.gz)を記憶します。
2回目以降の実行では、アルファベット(辞書式)順でlast pathの後に来るファイルのみをインポートします。(path/to/sample_201506.csv.gz、…)
td connector:createコマンドを使用して新しいscheduleを作成できます。次のものが必要です: scheduleの名前、cron-style schedule、データが保存されるdatabaseとtable、およびData Connector configuration file。
td connector:create \
daily_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlTreasure Dataのstorageは時間でパーティショニングされているため、--time-columnオプションを指定することをお勧めします(data partitioningを参照)。
$ td connector:create \
daily_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.yml \
--time-column created_atcron parameterは、3つの特別なオプションも受け入れます: @hourly、@daily、@monthly。
デフォルトでは、scheduleはUTC timezoneで設定されます。-tまたは--timezoneオプションを使用して、timezoneでscheduleを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張timezone formatsのみをサポートします。PST、CSTなどのtimezone abbreviationsはサポートされておらず、予期しないschedulesにつながる可能性があります。
td connector:listコマンドを実行して、現在スケジュールされているエントリのリストを確認できます。
td connector:listtd connector:showは、schedule entryの実行設定を表示します。
td connector:show daily_importtd connector:historyは、schedule entryの実行履歴を表示します。各個別の実行の結果を調査するには、td job jobidを使用します。
td connector:history daily_importtd connector:deleteはscheduleを削除します。
td connector:delete daily_importseed.ymlのoutセクションでfile import modeを指定できます。
これはデフォルトのmodeで、レコードはtarget tableに追加されます。
in:
...
out:
mode: appendこのmodeは、target tableのデータを置き換えます。このmodeでは、target tableに加えられた手動のschema変更はそのまま保持されることに注意してください。
in:
...
out:
mode: replace