CREATE TABLE [ IF NOT EXISTS ] table_identifier( col_name[:] col_type [ COMMENT col_comment ], ... )USING data_source[ COMMENT table_comment ][ OPTIONS ( 'key1'='value1', 'key2'='value2' )][ PARTITIONED BY ( col_name1, transform(col_name2), ... ) ][ LOCATION path ][ TBLPROPERTIES ( property_name=property_value, ... ) ]
USING data_source:テーブル作成時におけるデータの入力タイプ。現在サポートされている形式:CSV、ORC、PARQUET、ICEBERGなど。
table_identifier:テーブル名を指定。三段式(例:catalog.database.table)をサポート。
COMMENT:テーブルの説明情報。OPTIONS:USING data_source でサポートされる追加パラメータ。ストレージ時のパラメータ注入に使用します。PARTITIONED BY:指定された列に基づいてパーティションを作成します。
LOCATION path:データテーブルのストレージパス。
TBLPROPERTIES:テーブルのパラメータを指定するための一連のキー・バリュー値。OPTIONSでサポートされているキー | key に対応する value のデフォルト値 | 意味 |
sep または delimiter | , | csv保存時の列間の区切り文字、デフォルトは英語のカンマです |
mode | PERMISSIVE | データ変換時に期待通りに処理されない場合の処理モードを定義します。 PERMISSIVE:より寛容なモード、デフォルトで、ある行のデータを変換しようと試みます。例えば、ある行に余分な列がある場合、必要な列のみを自動的に取得します。 DROPMALFORMED:期待通りに処理されないデータを破棄します。例えば、ある行に余分な列がある場合、その行は破棄されます。 FAILFAST:csvフォーマットを厳格に要求し、ある行が期待通りでない場合、例えば余分な列がある場合、すぐに失敗します。 |
encoding または charset | UTF-8 | 文字列エンコーディングフォーマット。 例えば:UTF-8、US-ASCII、ISO-8859-1、UTF-16BE、UTF-16LE、UTF-16 |
quote | \\" | 引用符はシングルクォートかダブルクォートか、エスケープ文字の使用に注意してください |
escape | \\\\ | エスケープ文字、エスケープ文字の使用に注意してください |
charToEscapeQuoteEscaping | - | 引用符内部でエスケープが必要な文字 |
comment | \\u0000 | 備考情報 |
header | false | ヘッダーが存在します |
inferSchema | false | 列のタイプを推測し、推測しない場合は各列が文字列になります |
ignoreLeadingWhiteSpace | 読み取り:false 書き込み:true | 無視する先頭の空文字列 |
ignoreTrailingWhiteSpace | 読み取り:false 書き込み:true | 無視する末尾の空文字列 |
columnNameOfCorruptRecord | _corrupt_record | 変換できない列の列名、このパラメータは spark.sql.columnNameOfCorruptRecord の影響を受け、テーブル設定を優先します |
nullValue | - | null の保存形式、デフォルトは空文字列で、この場合は emptyValue の方法で書き込みます |
nanValue | NaN | 非数値型の値のストレージ形式 |
positiveInf | Inf | 正の無限大のストレージ形式 |
negativeInf | -Inf | 負の無限大のストレージ形式 |
compression または codec | - | 圧縮アルゴリズムのクラス名。デフォルトでは圧縮なし。略称を使用可能:bzip2、deflate、gzip、lz4、snappy |
timeZone | システムデフォルトのタイムゾーン | デフォルトタイムゾーン。このパラメータの値は spark.sql.session.timeZone の影響を受けます。例えば Asia/Shanghai など、テーブル設定を優先します。 |
locale | en-US | 言語タイプ |
dateFormat | yyyy-MM-dd | デフォルトの日付形式 |
timestampFormat | yyyy-MM-dd'T'HH:mm:ss.SSSXXX | デフォルトの時間形式。LEGACY モード以外では yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] です。 |
multiLine | false | 複数行を許可 |
maxColumns | 20480 | 最大列数 |
maxCharsPerColumn | -1 | 各列の最大文字数、-1は制限なしを意味します |
escapeQuotes | true | エスケープ引用符 |
quoteAll | quoteAll | 「書き込み時に全文に引用符を追加」 |
samplingRatio | 1.0 | サンプリング比率 |
enforceSchema | true | 指定されたスキーマを使用して強制的に読み込み、ヘッダーの定義は無視されます |
emptyValue | 読み取り 書き込み:\\"\\" | 空値の読み書き形式 |
lineSep | - | 改行文字 |
inputBufferSize | - | 読み取り時のバッファサイズ。このパラメータは spark.sql.csv.parser.inputBufferSize の影響を受ける可能性があり、テーブル設定を優先します。 |
unescapedQuoteHandling | STOP_AT_DELIMITER | 非エスケープ引用符が検出されたときの処理戦略。 STOP_AT_DELIMITER:区切り文字で読み取りを停止 BACK_TO_DELIMITER:区切り文字に戻る STOP_AT_CLOSING_QUOTE:次の引用符で読み取りを停止 SKIP_VALUE:この列のデータをスキップ RAISE_ERROR:エラーを報告 |
OPTIONSでサポートされているキー | key に対応する value のデフォルト値 | 意味 |
compression または orc.compress | snappy | 圧縮アルゴリズム。略称 snappy/zlib/lzo/lz3/zstd をサポートします。このパラメータは spark.sql.orc.compression.codec の影響を受け、テーブルパラメータが優先されます。 |
mergeSchema | false | スキーマをマージします。このパラメータは spark.sql.orc.mergeSchema の影響を受け、テーブルパラメータが優先されます。 |
OPTIONSでサポートされているキー | key に対応する value のデフォルト値 | 意味 |
compression または parquet.compression | snappy | 圧縮アルゴリズム。デフォルトでは snappy を使用します。パラメータ spark.sql.parquet.compression.codec の影響を受け、テーブルパラメータが優先されます。 |
mergeSchema | false | スキーマをマージするかどうか。パラメータ spark.sql.parquet.mergeSchema の影響を受け、テーブルパラメータが優先されます。 |
datetimeRebaseMode | EXCEPTION | parquetファイル書き込み時の日付変換ポリシー。LEGACYモードでは日付をグレゴリオ暦に変換し、CORRECTEDでは日付をグレゴリオ暦に変換せず、EXCEPTIONでは日付が異なるフォーマットに属している場合にエラーを報告します。パラメータ spark.sql.parquet.datetimeRebaseModeInRead の影響を受け、テーブルパラメータが優先されます。 |
int96RebaseMode | EXCEPTION | parquetファイル読み込み時の時間変換ポリシー。LEGACYモードでは時間をグレゴリオ暦に変換し、CORRECTEDでは時間を変換せず、EXCEPTIONでは異なるフォーマットの時間に遭遇した場合にエラーを報告します。パラメータ spark.sql.parquet.int96RebaseModeInRead の影響を受け、テーブルパラメータが優先されます。 |
CREATE TABLE dempts(id bigint COMMENT 'id number',num int,eno float,dno double,cno decimal(9,3),flag boolean,data string,ts_year timestamp,date_month date,bno binary,point struct<x: double, y: double>,points array<struct<x: double, y: double>>,pointmaps map<struct<x: int>, struct<a: int>>)USING icebergCOMMENT 'table documentation'PARTITIONED BY (bucket(16,id), years(ts_year), months(date_month), identity(bno), bucket(3,num), truncate(10,data))LOCATION '/warehouse/db_001/dempts'TBLPROPERTIES ('write.format.default'='orc');
CREATE TABLE [ IF NOT EXISTS ] table_identifier( col_name[:] col_type [ COMMENT col_comment ], ... )[ COMMENT table_comment ][ PARTITIONED BY ( col_name1, transform(col_name2), ... ) ]
table_identifier:3段式をサポート、catalog.db.name
スキーマとデータ型col_type: primitive_type| nested_typeprimitive_type: boolean| int/integer| long/bigint| float| double| decimal(p,s),p=最大桁数,s=最大小数点桁数, s<=p<=38| date| timestamp,timestamp with timezone,timeとwithout timezoneはサポートされていません| string,Icebergのuuidタイプにも対応可能| binary、Iceberg fixed型にも対応可能nested_type: struct| list| map
transform: identity、任意の型をサポート、DLCはこの変換をサポートしていません| bucket[N]、hash mod Nバケット分割、col_type: int、long、decimal、date、timestamp、string、binaryをサポート| truncate[L]、Lで切り捨てバケット分割、col_type: int、long、decimal、stringをサポート| years、年、col_type: date、timestampをサポート| months、月、col_type: date、timestampをサポート| days/date、日付、col_type: date、timestampをサポート| hours/date_hour、時間、col_type: timestampをサポート
CREATE TABLE dempts(id bigint COMMENT 'id number',num int,eno float,dno double,cno decimal(9,3),flag boolean,data string,ts_year timestamp,date_month date,bno binary,point struct<x: double, y: double>,points array<struct<x: double, y: double>>,pointmaps map<struct<x: int>, struct<a: int>>)COMMENT 'table documentation'PARTITIONED BY (bucket(16,id), years(ts_year), months(date_month), identity(bno), bucket(3,num), truncate(10,data));
フィードバック