注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry は CSV データセットをサポートしています。CSV データセットは、CSV 形式のファイルを含むデータセットです。
CSV 形式では、さまざまな区切り文字、引用符文字、エスケープ文字を使用できます。これに対応するために、CSV ファイルのパース方法を制御するパラメーターを定義できます。これらのパラメーターは、データセットのスキーマに保存されます。Foundry は推論を使用してデータセットに適したパラメーターを提案しますが、結果を検証し、必要に応じて変更する必要があります。
Foundry の CSV データセットでは、通常、スキーマの dataFrameReaderClass として TextDataFrameReader が定義されています。これは、整っていないデータを効果的に処理するためのカスタムパラメーターをサポートしています。実行時には、可能な限り高いパフォーマンスと信頼性を実現するために、Spark CSV DataFrameReader ↗ に処理を委譲します。
Foundry では、データセットプレビューアプリケーションの詳細タブに移動してスキーマを選択すると、任意のデータセットのスキーマを表示できます。スキーマの詳細については、データセットのドキュメントを参照してください。
CSV スキーマは、データセットプレビューのプレビュータブを表示しているときに利用できるスキーマを編集 UI で変更できます。この UI では、利用可能なオプションと、それらが出力データセットに与える影響を視覚的に確認できます。CSV が特に不正な形式である場合、目的の出力を得るためにスキーマを手動で編集する必要があることがあります。
以下で説明するスキーマのオプションは、CSV ファイルから構成されたデータセットにのみ適用されます。
スキーマで TextDataFrameReader のオプションを手動で設定するには、データセットプレビューの詳細タブでスキーマページに移動し、編集を選択します。スキーマの末尾には、次のようなセクションがあるはずです。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"dataFrameReaderClass": "com.palantir.foundry.spark.input.TextDataFrameReader", "customMetadata": { "textParserParams": { "parser": "CSV_PARSER", "charsetName": "UTF-8", "fieldDelimiter": ",", "recordDelimiter": "\n", "quoteCharacter": "\"", "dateFormat": {}, "skipLines": 1, "jaggedRowBehavior": "THROW_EXCEPTION", "parseErrorBehavior": "THROW_EXCEPTION", "addFilePath": false, "addFilePathInsteadOfUri": false, "addImportedAt": false, "initialReadTimeout": "1 hour" } } }
TextDataFrameReader では、次のオプションを利用できます。
| プロパティ | 用途 | 許容値 | 必須か | 対応するパーサー |
|---|---|---|---|---|
| parser | 使用するパーサーの種類。 | CSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER, SINGLE_COLUMN_PARSER | はい | 該当なし |
| nullValues | null としてパースする値。 | 文字列のリスト | はい | すべて |
| fieldDelimiter | レコードを複数のフィールドに分割するための区切り文字。 | 1文字の文字列 | いいえ、デフォルトは ,(カンマ)です | CSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER |
| recordDelimiter | CSV ファイルを複数のレコードに分割するための行末記号。 | 改行文字で終わる文字列 | いいえ、デフォルトは | |
| (改行)です CSV_PARSER, MULTILINE_CSV_PARSER | ||||
| quoteCharacter | CSV のパースに使用する引用符文字。 | 1文字の文字列 | いいえ、デフォルトは "(二重引用符)です | CSV_PARSER, MULTILINE_CSV_PARSER |
| dateFormat | 特定の列で日付をパースするための書式文字列。 | 列名を JodaTime DateTimeFormat パターンに対応付けるマップ | いいえ、デフォルトは空のマップです | CSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER |
| skipLines | 各ファイルの先頭でパースをスキップする行数。 | 非負の数 | いいえ、デフォルトは0です | すべて |
| jaggedRowBehavior | ヘッダーで指定されたデータ型の数よりも列数が多い、または少ない場合の動作。 | THROW_EXCEPTION, DROP_ROW | いいえ、デフォルトは THROW_EXCEPTION です | 該当なし |
| parseErrorBehavior | 値をヘッダーで指定された要求されるデータ型にパースする処理に失敗した場合の動作。 | THROW_EXCEPTION, REPLACE_WITH_NULL | いいえ、デフォルトは THROW_EXCEPTION です | 該当なし |
| addFilePath | 各行にファイルパスを追加します。 | ブール値 | いいえ、デフォルトは false です | すべて |
| addImportedAt | 各行にインポート時刻を追加します。 | ブール値 | いいえ、デフォルトは false です | すべて |
| initialReadTimeout | パーサーが最初の行の読み取りを待機する時間を制限します。 | 人が読める形式の期間 | いいえ、デフォルトは1時間です | すべて |
Spark CSV DataFrameReader にすでに慣れている場合は、customMetadata で dataFrameReaderClass を DataSourceDataFrameReader に、format を csv に設定できます。
サポートされているオプションの一覧については、Spark CSV DataFrameReader のドキュメント ↗を参照してください。次のように、設定をキーと値のペアとして追加できます。
Copied!1 2 3 4 5 6 7 8 9"dataFrameReaderClass": "com.palantir.foundry.spark.input.DataSourceDataFrameReader", "customMetadata": { "format": "csv", "options": { "unescapedQuoteHandling": "STOP_AT_DELIMITER", "multiline": true, ... } }