Xplenty中級編 Part2: System変数または事前定義済み変数について


今回はシステム変数(System Variables)について紹介したいと思います。

システム変数を変更するメリット

システム変数を使うことにより、リトライ回数や同時実行数などあらかじめ定められている上限をジョブの特性に合わせて変更することが可能です。

システム変数はどこで設定する?

変数画面の左側で「User」から「System」に切り替えることで設定画面を切り替えることが可能です。

システム変数一覧

注意点
以下の表および説明については、2020年4月時点の情報を元に作成しています。
更新される可能性があるため、最新の情報はこちらのヘルプを参照ください。

System Variables 説明 デフォルト値 単位 MB換算
_MAX_COMBINED_SPLIT_SIZE 1 つのタスクで処理するデータ量をバイト単位で指定します。小さいファイルは、このサイズに達するまで結合されます。それより大きなファイルは、圧縮されていない場合、もしくはBzip2 を使用して圧縮されている場合ともに設定されたサイズに基づき分割されます。 67,108,864 バイト 64
_BYTES_PER_REDUCER 1レコードで読み取れる文字列サイズ(バイト単位)。それより大きいサイズのレコードは無視されます。 209,715,200 バイト 200
_LINE_RECORD_READER_MAX_LENGTH
ファイルから読み取る際の1行の最大バイト長。この値より長い行は破棄されます。
1,048,576 バイト 1
_DEFAULT_TIMEZONE DateTime FieldでTimezone指定がないものに対してTimezoneを自動追加する際のTimezone。デフォルトはUTC。 +00:00'
_DEFAULT_PARALLELISM パッケージで使用する並列リデュースタスクのデフォルト数を設定します。一般的に言って、Reducerの数はデータのサイズとディストリビューションに依存します。データが比較的大きいが偏っている場合(たとえば、フィールドで集計する場合、ほとんどのレコードは1つのグループに分類されます)、Reducerを追加してもパフォーマンスにプラスの影響はありません。デフォルト値は0です。これは、Reducerの数が_BYTES_PER_REDUCERによって計算されていることを意味します。 0
_SHUFFLE_INPUT_BUFFER_PERCENT シャッフル中(MapperのアウトプットをReducerへ渡す処理)に最大ヒープサイズからMapアウトプットの保存に割り当てられるメモリの割合。 70%
_COPY_PARALLELISM コピー前処理アクションで使用されるプロセスの数を制御します 0
_COPY_TARGET_PARTITIONS コピー前処理アクションによってデータが分割されるパーティションの数を制御します。この変数の値を0に設定すると、プロセスはファイルをマージしません。 100
_COPY_TARGET_SIZE コピー前処理アクションによって連結されたファイルについてパーティション内の1ファイルあたりの最大サイズを制御します。 64
_PARQUET_COMPRESSION 保存時にApache Parquetを利用する場合の圧縮タイプ。使用可能な値は次のとおりです。UNCOMPRESSED、GZIP、SNAPPY。
_PARQUET_PAGE_SIZE Apache Parquet圧縮用のページサイズ 1 * 1024 * 1024 1
_PARQUET_BLOCK_SIZE Apache Parquetのメモリにバッファされるrow groupのサイズ。
*Apache parquetのドキュメントによると大きいrow groups (512MB - 1GB)を推奨しています
https://parquet.apache.org/documentation/latest/
128 * 1024 * 1024 バイト 128
_GA_API_REQUEST_READ_TIMEOUT Google Analyticsのリクエストタイムアウト 30 * 1000 ミリ秒
_GA_API_REQUEST_MAX_RESULTS Google Analyticsのレスポンスに含めることができる行の最大数。(指定できるMaxは10000) 10,000
_GA_API_MAX_INPUT_SPLITS Google Analyticsに対して同時実行できるリクエストの最大数 10
_GA_API_SKIP_BAD_PROFILES Google AnalyticsのプロファイルIDにアクセスできないものが含まれている場合にパッケージ実行を正常に完了する場合には、trueに設定します。 FALSE
_ADWORDS_API_REQUEST_READ_TIMEOUT Google Adwordsへのリクエストのタイムアウト 180 * 1000 ミリ秒
_ADWORDS_API_MAX_INPUT_SPLITS Google Adwordsに対して同時実行できるリクエストの最大数 -1
_CACHED_BAG_MEMORY_PERCENT Map もしくは Reduceタスクのすべてのバッグ(データを処理する際、1つもしくは複数のフィールドをグループ化したもの=つまり処理対象のデータのことです)に割り当てられるヒープの割合。こちらで設定した値がいっぱいになると、データがディスクに流出します。値を大きくすると、ディスクへの流出が減りますが、ヒープメモリが不足する可能性が高くなります。 0.2 20%
_MAP_MAX_ATTEMPTS Mapタスクについて失敗で完了する前に何回リトライを行うか? 3
_REDUCER_MAX_ATTEMPTS Reduceタスクについて失敗で完了する前に何回リトライを行うか? 3
_MAP_MAX_FAILURES_PERCENT ジョブが失敗で完了となる前に失敗できるMapタスクの最大パーセンテージを制御します。値の範囲は0〜100です。 0
_REDUCER_MAX_FAILURES_PERCENT ジョブが失敗で完了となる前に失敗できるReduceタスクの最大パーセンテージを制御します。値の範囲は0〜100です。 0
_MAP_TASK_TIMEOUT タスクの応答がない場合にどれくらい待ってそのタスクをKillするのかをミリ秒単位で設定します。 600 * 1000 ミリ秒
_BQ_READER_POLL_RETRIES Google BigQueryからのデータエクスポートをポーリングする際のリトライ回数を制御します。 60 回数
_BQ_READER_POLL_INTERVAL Google BigQueryからのデータエクスポートをポーリングする際のリトライの間隔時間をミリ秒単位で制御します。 10,000 ミリ秒
_BQ_READER_MAX_SHARDS Shardされたテーブルを読み込む際の最大数 500
_JDBC_SPLIT_QUERY_RETRIES データベースがソースの場合の並列クエリでキーの最小値と最大値を取得するためのリトライ回数。 3
_JDBC_SPLIT_QUERY_RETRIES_INTERVAL_IN_SEC データベースソースの並列クエリでキーの最小値と最大値を取得するためのリトライの間隔。 30
_SQL_COMMAND_TIMEOUT_IN_SEC SQL実行時のタイムアウト。デフォルトはタイムアウトなしです。 -1
_INTERMEDIATE_COMPRESSION 結果に対して圧縮するかどうかです。デフォルトは圧縮なしです。 FALSE
_SPANNER_MAX_WORKERS Google Cloud Spanner がクエリを分散処理する場合の最大Worker数 2
_SPANNER_BATCH_SIZE Google Spannerにロードする際の1トランザクションあたりのバッチサイズ(行数)。デフォルトは100です。 100
_FS_SFTP_MAX_RETRIES SFTPでファイルやディレクトリを検索時のリトライ回数です。デフォルトは5です. 5
_FS_SFTP_RETRY_SLEEP SFTPでファイルやディレクトリを検索時のリトライの間隔(ミリ秒)です。デフォルトは500です. 500 ミリ秒
_FS_SFTP_BLOCK_SIZE タスクがSFTPから読み取るブロックのサイズを決定します。大きなファイルを読み取るときにデフォルトより大きい値に変更します。 64 * 1024 * 1024 バイト 64
_FACEBOOK_ADS_INSIGHTS_SLEEP Facebook Ads Insightsレポート取得時のリトライの間隔(ミリ秒)。デフォルトは0です。 0
_FB_ASYNC_REPORT_TIMEOUT Facebook Ads Insightsレポートの非同期リクエストのリクエストタイムアウト(試行ごと)。この値を超えると、試行は失敗します(デフォルト-タイムアウトなし)。 -1
_HTTP_FOLLOW_REDIRECTS REST APIソースやCurlコマンドを利用したFunctionがリダイレクトされたステータスコードに従わないようにする場合は、falseに設定します。 TRUE
_HTTP_REQUEST_MAX_RETRIES 例外エラーになる前にHTTPレスポンスコード429または5xxを受信したときに試行されるREST APIソースまたは* Curl *関数のリトライ回数。 8
_SYNC_WAIT_TIME Amazon RedshiftをDestinationとするデータをステージングしてからRedshiftクラスターでCOPYを実行するまでに待機する時間(秒単位) 1
_XPATH_IGNORE_ERRORS XMLのXpathエラー無視するかどうか。デフォルトは無視しない。 FALSE
_FS_IGNORE_MISSING_INPUT_EXCEPTIONS ソースパス(ファイルストレージソースコンポーネントを含む)で入力ファイルが見つからない場合にパッケージを正常に完了するには、trueに設定します。 FALSE
_ADWORDS_API_SKIP_BAD_ACCOUNTS AdWordsのAccount IDにアクセスできないものが含まれている場合にパッケージを正常に完了するには、trueに設定します(Google Adwordsソースコンポーネントを使用)。 FALSE

MapperとReducerの再試行回数の制御について

_MAP_MAX_ATTEMPTS:

データソースからデータを取得する際の再試行回数を定義する_MAP_MAX_ATTEMPTSの制御対象については、制限があります。以下はスコープ対象外となりますのでご注意ください。

_MAP_MAX_ATTEMPTS再実行対象外となるデータソース:

  • JDBC(データベース) リトライ回数は_JDBC_SPLIT_QUERY_RETRIESで指定可能です。*デフォルトの再施行回数は3回です。
  • SFTP リトライ回数は_FS_SFTP_MAX_RETRIESで指定可能です。*デフォルトの再施行回数は5回です。

_REDUCE_MAX_ATTEMPTS:

  • また_REDUCE_MAX_ATTEMPTSで再試行回数を制御できるのはCurl関数を使用したリクエストなどHTTPリクエスト(POST)でデータを更新するような場合です。