INSERT OVERWRITE DIRECTORY
説明
INSERT OVERWRITE DIRECTORY
ステートメントは、Spark ファイル形式または Hive SerDe を使用して、ディレクトリの既存のデータを新しい値で上書きします。Hive SerDe を使用するには、Hive のサポートを有効にする必要があります。挿入される行は、値式で指定するか、クエリからの結果で指定できます。
構文
INSERT OVERWRITE [ LOCAL ] DIRECTORY [ directory_path ]
{ spark_format | hive_format }
{ VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ] | query }
spark_format
は次のように定義されます。
USING file_format [ OPTIONS ( key = val [ , ... ] ) ]
hive_format
は次のように定義されます。
[ ROW FORMAT row_format ] [ STORED AS hive_serde ]
パラメータ
-
directory_path
出力ディレクトリを指定します。
LOCAL
キーワードは、ディレクトリがローカルファイルシステム上にあることを指定するために使用されます。Spark ファイル形式では、OPTIONS
を使用してpath
で指定することもできますが、directory_path
とpath
オプションの両方を指定することはできません。 -
file_format
挿入に使用するファイル形式を指定します。有効なオプションは
TEXT
、CSV
、JSON
、JDBC
、PARQUET
、ORC
、HIVE
、LIBSVM
、またはorg.apache.spark.sql.execution.datasources.FileFormat
のカスタム実装の完全修飾クラス名です。 -
OPTIONS ( key = val [ , … ] )
ファイル形式の書き込みに関する1つ以上のオプションを指定します。
-
hive_format
挿入に使用するファイル形式を指定します。
row_format
とhive_serde
はどちらもオプションです。ROW FORMAT SERDE
はTEXTFILE
、SEQUENCEFILE
、またはRCFILE
でのみ使用できますが、ROW FORMAT DELIMITED
はTEXTFILE
でのみ使用できます。どちらも定義されていない場合、Spark はTEXTFILE
を使用します。 -
row_format
この挿入の行形式を指定します。有効なオプションは
SERDE
句とDELIMITED
句です。SERDE
句を使用して、この挿入のカスタムSerDe
を指定できます。または、DELIMITED
句を使用してネイティブSerDe
を指定し、デリミタ、エスケープ文字、NULL文字などを指定できます。 -
hive_serde
この挿入のファイル形式を指定します。有効なオプションは
TEXTFILE
、SEQUENCEFILE
、RCFILE
、ORC
、PARQUET
、およびAVRO
です。INPUTFORMAT
およびOUTPUTFORMAT
を使用して独自の入力形式と出力形式を指定することもできます。 -
VALUES ( { value
|
NULL } [ , … ] ) [ , ( … ) ]挿入する値を指定します。明示的に指定された値またはNULLを挿入できます。句内の各値を区切るにはコンマを使用する必要があります。複数の行を挿入するために、複数の値セットを指定できます。
-
query
挿入する行を生成するクエリ。次のいずれかの形式にすることができます。
例
Spark 形式
INSERT OVERWRITE DIRECTORY '/tmp/destination'
USING parquet
OPTIONS (col1 1, col2 2, col3 'test')
SELECT * FROM test_table;
INSERT OVERWRITE DIRECTORY
USING parquet
OPTIONS ('path' '/tmp/destination', col1 1, col2 2, col3 'test')
SELECT * FROM test_table;
Hive 形式
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/destination'
STORED AS orc
SELECT * FROM test_table;
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/destination'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT * FROM test_table;