CSV
This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.

CSVフォーマット #

Format: Serialization Schema Format: Deserialization Schema

CSVフォーマットを使って、CSVスキーマに基づいたCSVデータを読み書きできます。現在、CSVスキーマはテーブルスキーマから派生しています。

依存 #

In order to use the CSV format the following dependencies are required for both projects using a build automation tool (such as Maven or SBT) and SQL Client with SQL JAR bundles.

Maven dependency SQL Client
Built-in

CSV形式を持つテーブルの作成法 #

ここでは、KafkaコネクタとCSV形式を使ってテーブルを作成する方法を示します。

CREATE TABLE user_behavior (
  user_id BIGINT,
  item_id BIGINT,
  category_id BIGINT,
  behavior STRING,
  ts TIMESTAMP(3)
) WITH (
 'connector' = 'kafka',
 'topic' = 'user_behavior',
 'properties.bootstrap.servers' = 'localhost:9092',
 'properties.group.id' = 'testGroup',
 'format' = 'csv',
 'csv.ignore-parse-errors' = 'true',
 'csv.allow-comments' = 'true'
)

フォーマットオプション #

オプション 必要条件 Forwarded デフォルト 種類 説明
形式
必須 no (none) 文字列 使うフォーマットを指定します。ここでは、'csv'にする必要があります。
csv.field-delimiter
オプション はい , 文字列 フィールド区切り文字(デフォルトは',')は、1文字である必要があります。バックスラッシュを使って特殊文字、例えば'\t'はタブ文字を表す、を指定することができます。 Unicodeを使ってプレーンSQLで指定することもできます。例えば、'csv.field-delimiter' = U&'\0001'0x01文字を表します。
csv.disable-quote-character
オプション はい false 真偽値 フィールド値を囲むための引用符文字を無効にします(デフォルトはfalse)。 trueの場合、'csv.quote-character'は設定できません。
csv.quote-character
オプション はい " 文字列 フィールド値を囲むための引用符文字(デフォルトは")。
csv.allow-comments
オプション はい false 真偽値 '#'で始まるコメント行を無視します(デフォルトでは無効です)。 有効にした場合は、空の行を許可するために解析エラーも無視してください。
csv.ignore-parse-errors
オプション no false 真偽値 解析エラーが発生したフィールドと行を失敗せずにスキップします。 エラーが発生した場合は、フィールドはnullに設定されます。
csv.array-element-delimiter
オプション はい ; 文字列 配列と行要素の値を区切るための 配列要素デリミタ (デフォルトは';')。
csv.escape-character
オプション はい (none) 文字列 値をエスケープするためのエスケープ文字(デフォルトでは無効です)。
csv.null-literal
オプション はい (none) 文字列 null値として解釈されるnullリテラル文字(デフォルトでは無効です)。
csv.write-bigdecimal-in-scientific-notation
オプション はい true 真偽値 BigDecimalデータ型の科学的表記の表現を有効にします(デフォルトはtrueです)。例えば、100000はデフォルトで1E+5としてエンコードされ、このオプションをfalseに設定すると、100000として書き込まれます。注意: 値が0以外で、10の倍数の場合のみ科学的表記に変換されます。

データ型マッピング #

現在、CSVスキーマは常にテーブルスキーマから派生します。CSVスキーマの明示的な定義はまだサポートされません。

FlinkのCSV形式は、jackson databind APIを使ってCSV文字列を解析して生成します。

以下の表は、Flink型からCSV型への型マッピングを一覧表示しています。

Flink SQL型 CSV型
CHAR / VARCHAR / STRING string
BOOLEAN boolean
BINARY / VARBINARY string with encoding: base64
DECIMAL number
TINYINT number
SMALLINT number
INT number
BIGINT number
FLOAT number
DOUBLE number
DATE string with format: date
TIME string with format: time
TIMESTAMP string with format: date-time
INTERVAL number
ARRAY array
ROW object
inserted by FC2 system