データ接続と統合データセットプレビューCSV のパース

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

CSV のパース

Foundry は CSV データセットをサポートしています。CSV データセットは、CSV 形式のファイルを含むデータセットです。

CSV 形式では、さまざまな区切り文字、引用符文字、エスケープ文字を使用できます。これに対応するために、CSV ファイルのパース方法を制御するパラメーターを定義できます。これらのパラメーターは、データセットのスキーマに保存されます。Foundry は推論を使用してデータセットに適したパラメーターを提案しますが、結果を検証し、必要に応じて変更する必要があります。

Foundry でのパース

Foundry の CSV データセットでは、通常、スキーマの dataFrameReaderClass として TextDataFrameReader が定義されています。これは、整っていないデータを効果的に処理するためのカスタムパラメーターをサポートしています。実行時には、可能な限り高いパフォーマンスと信頼性を実現するために、Spark CSV DataFrameReader ↗ に処理を委譲します。

設定

Foundry では、データセットプレビューアプリケーションの詳細タブに移動してスキーマを選択すると、任意のデータセットのスキーマを表示できます。スキーマの詳細については、データセットのドキュメントを参照してください。

CSV スキーマは、データセットプレビューのプレビュータブを表示しているときに利用できるスキーマを編集 UI で変更できます。この UI では、利用可能なオプションと、それらが出力データセットに与える影響を視覚的に確認できます。CSV が特に不正な形式である場合、目的の出力を得るためにスキーマを手動で編集する必要があることがあります。

以下で説明するスキーマのオプションは、CSV ファイルから構成されたデータセットにのみ適用されます。

TextDataFrameReader のオプション

スキーマで 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はい該当なし
nullValuesnull としてパースする値。文字列のリストはいすべて
fieldDelimiterレコードを複数のフィールドに分割するための区切り文字。1文字の文字列いいえ、デフォルトは ,(カンマ)ですCSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER
recordDelimiterCSV ファイルを複数のレコードに分割するための行末記号。改行文字で終わる文字列いいえ、デフォルトは
(改行)です CSV_PARSER, MULTILINE_CSV_PARSER
quoteCharacterCSV のパースに使用する引用符文字。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 のオプション

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, ... } }