tencent cloud

Data Lake Compute

CREATE TABLE

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-25 11:51:48

説明

サポートカーネル:Presto、SparkSQL。
適用テーブル範囲:ネイティブIcebergテーブル、外部テーブル。
用途:テーブルを作成すると同時にいくつかの属性を設定し、CREATE TABLE AS構文の使用をサポートします。
建表ストレージパス:テーブル作成のストレージパスはCOSディレクトリに指定できますが、ファイルには指定できません。

外部テーブル構文

構文

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:テーブルのパラメータを指定するための一連のk-v値。

USINGとOPTIONS パラメータの詳細説明

USING CSV
USING ORC
USING PARQUET
参考リンク:CSVの操作
CSVデータテーブルでサポートされている構成は次のとおりです。
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:エラーを報告

ORCデータテーブルでサポートされている構成は次のとおりです:
OPTIONSでサポートされているキー
key に対応する value のデフォルト値
意味
圧縮またはorc.compress
snappy
圧縮アルゴリズムは、snappy/zlib/lzo/lz3/zstdの略称をサポートし、このパラメータはspark.sql.orc.compression.codecの影響を受けますが、テーブルパラメータが優先されます。
mergeSchema
false
スキーマをマージします。このパラメータはspark.sql.orc.mergeSchemaの影響を受け、テーブルパラメータが優先されます
HiveRead と HiveWriter(spark.sql.hive.convertMetastoreOrc=false を設定)を使用して読み書きする場合、OPTIONS は Orc ネイティブの設定もサポートしています。詳細は LanguageManual ORC を参照してください。
PARQUETデータテーブル関連のパラメータのほとんどはSpark confで設定可能であり、Spark confからの設定が推奨されます。optionsでも以下の設定がサポートされています:
OPTIONSでサポートされているキー
key に対応する value のデフォルト値
意味
圧縮または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の影響を受けますが、テーブルパラメータが優先されます。
HiveRead と HiveWriter(spark.sql.hive.convertMetastoreParquet=false を設定)を使用して読み書きする場合、OPTIONS は Parquet ネイティブの設定もサポートしています。詳細は Hadoop integration を参照してください。

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 iceberg
COMMENT '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 時のキーワードでは、Spark の USING と Hive の STORED AS に違いがあり、テーブル作成後のファイル形式や読み取りが期待通りにならない可能性があります。ここで特別に説明します:
USING DATA_SOURCE:Spark 構文。このキーワードは、テーブル作成時にどのデータソースを入力形式として使用するかを示し、テーブルの Location 下のファイル形式と読み取り方法に直接影響します。CSV、TXT、Iceberg、Parquet、Orc などの値を取ることができます。
STORED AS FILE_FORMAT:Hive 構文。このキーワードは、HIVE 形式のテーブルを作成するために使用され、テーブルに保存されるデータファイルの形式を示します。TXT、Parquet、Orc などの値を取ることができます。この構文は使用しないことをお勧めします。Spark ネイティブの reader/writer がサポートされない可能性があります(例:CSV がサポートされない)。

ネイティブテーブル Iceberg 構文

注意
この構文はネイティブテーブルの作成のみをサポートします。

構文

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_type

primitive_type
: boolean
| int/integer
| long/bigint
| float
| double
| decimal(p,s),p=最大桁数,s=最大小数点桁数, s<=p<=38
| date
| timestamptimestamp with timezone,timeとwithout timezoneはサポートされていません
| string,Icebergのuuidタイプにも対応可能
| binary、Iceberg fixed型にも対応可能

nested_type
: struct
| list
| map
Partition Transforms
transform
: identity、任意の型をサポート、DLCはこの変換をサポートしていません
| bucket[N]hash mod Nバケット分割、col_type: int、long、decimaldatetimestamp、string、binaryをサポート
| truncate[L]、Lで切り捨てバケット分割、col_type: int、long、decimal、stringをサポート
| years、年、col_type: datetimestampをサポート
| months、月、col_type: datetimestampをサポート
| days/date、日付、col_type: datetimestampをサポート
| 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));

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック