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を指定し、区切り文字、エスケープ文字、ヌル文字などを定義できます。 -
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;