コマンドラインインターフェースからFTPデータコネクタを使用することもできます。以下の手順では、CLIを使用してデータをインポートする方法を説明します。
最新のTD Toolbeltをインストールしてください。
$ td --version
0.11.10まず、以下の例に示すように、FTPの詳細情報を含むseed.ymlを準備します。バケット名とターゲットファイル名(または複数ファイルのプレフィックス)も指定する必要があります。
in:
type: ftp
host: ftp.example.net
port: 21
user: anonymous
password: XXXX
path_prefix: /ftp/file/path/prefix # FTPサーバー上の*.csvまたは*.tsvファイルのパス
out:
mode: appendData Connector for FTPは、指定されたプレフィックスに一致するすべてのファイルをインポートします(例:path_prefix: path/to/sample_ > path/to/sample_201501.csv.gz, path/to/sample_201502.csv.gz, …, path/to/sample_201505.csv.gz)。
Active Modeはサポートされていません。
FTPSを使用している場合は、次のように追加の詳細情報を指定します:
in:
type: ftp
host: ftp.example.net
port: 21
user: anonymous
password: "mypassword"
path_prefix: /ftp/file/path/prefix
ssl: true
ssl_verify: false
out:
mode: append詳細については、outプラグインのモードを参照してください。
connector:guessを使用します。このコマンドは、ソースファイルを自動的に読み取り、ファイル形式を評価(ロジックを使用して推測)します。
guessコマンドは、ソースデータファイルに3行以上、2列以上が必要です。これは、コマンドがソースデータのサンプル行を使用して列定義を評価するためです。
$ td connector:guess seed.yml -o load.ymlload.ymlを開くと、ファイル形式、エンコーディング、列名、型などの評価されたファイル形式定義が表示されます。
in:
type: ftp
host: ftp.example.net
port: 21
user: anonymous
password: XXXX
path_prefix: /ftp/file/path/prefix
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: ''
skip_header_lines: 1
columns:
- name: id
type: long
- name: company
type: string
- name: customer
type: string
- name: created_at
type: timestamp
format: '%Y-%m-%d %H:%M:%S'
out:
mode: append次に、preview コマンドを使用して、システムがファイルをどのように解析するかをプレビューできます。
$ td connector:preview load.ymlシステムがカラム名やカラムタイプを予期せず検出した場合は、load.yml を直接変更して再度プレビューしてください。
現在、Data Connector は "boolean"、"long"、"double"、"string"、および "timestamp" タイプの解析をサポートしています。
データロードジョブを実行する前に、データベースとテーブルを作成する必要があります。次の手順に従ってください:
td database:create td_sample_db
td table:create td_sample_db td_sample_table最後に、ロードジョブを送信します。データのサイズによっては数時間かかる場合があります。データを保存する Treasure Data のデータベースとテーブルを指定します。
Treasure Data のストレージは時間でパーティション分割されているため (データパーティショニング を参照)、--time-column オプションを指定することをお勧めします。オプションが指定されていない場合、Data Connector は最初の long または timestamp カラムをパーティショニング時間として選択します。--time-column で指定するカラムのタイプは、long または timestamp タイプのいずれかである必要があります。
データに時間カラムがない場合は、add_time フィルターオプションを使用して時間カラムを追加できます。詳細については、add_time フィルタープラグイン を参照してください。
$ 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) が既に作成されていることを前提としています。データベースまたはテーブルが TD に存在しない場合、connector:issue コマンドは失敗するため、データベースとテーブルを手動で作成するか、td connector:issue コマンドで --auto-create-table オプションを使用してデータベースとテーブルを自動作成してください:
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-table現在、Data Connector はサーバー側でレコードをソートしません。時間ベースのパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。
time というフィールドがある場合は、--time-column オプションを指定する必要はありません。
td connector:issue load.yml --database td_sample_db --table td_sample_table増分FTPファイルインポートのために、定期的なData Connector実行をスケジュールすることができます。高可用性を実現するため、スケジューラの分散と運用には細心の注意を払っています。この機能を使用することで、ローカルデータセンターのcronデーモンは不要になります。
スケジュールインポートでは、FTP用Data Connectorは最初に指定されたプレフィックスに一致するすべてのファイル(例:path_prefix: path/to/sample_ –> path/to/sample_201501.csv.gz、path/to/sample_201502.csv.gz、…、path/to/sample_201505.csv.gz)をインポートし、次回実行のために最後のパス(path/to/sample_201505.csv.gz)を記憶します。
2回目以降の実行では、connectorはアルファベット順(辞書式順序)で最後のパスより後にあるファイルのみをインポートします。(path/to/sample_201506.csv.gz、…)
新しいスケジュールはtd connector:createコマンドを使用して作成できます。スケジュールの名前、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびData Connector設定ファイルが必要です。
$ td connector:create \
daily_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlTreasure Dataのストレージは時間によってパーティション分割されているため、--time-columnオプションを指定することも推奨されます(データパーティショニングを参照)。
$ td connector:create \
daily_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.yml \
--time-column created_atcronパラメータは、@hourly、@daily、@monthlyの3つの特別なオプションも受け入れます。
デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートしていることに注意してください。PST、CSTなどのタイムゾーン略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。
td connector:listコマンドを実行すると、現在スケジュールされているエントリの一覧を確認できます。
$ td connector:listtd connector:showは、スケジュールエントリの実行設定を表示します。
td connector:show daily_importtd connector:historyは、スケジュールエントリの実行履歴を表示します。個々の実行結果を調査するには、td job jobidを使用してください。
td connector:history daily_import