tencent cloud

Data Lake Compute

CREATE TABLE

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-05-29 11:49:05

説明

サポートカーネル: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:テーブルのパラメータを指定するための一連のキー・バリュー値。

USINGおよびOPTIONSパラメータの詳細説明

USING CSV
USING ORC
USING PARQUET
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 のデフォルト値
意味
compression または 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 のデフォルト値
意味
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 の影響を受け、テーブルパラメータが優先されます。
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));

ヘルプとサポート

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

フィードバック