INSERT OVERWRITE DIRECTORY
說明
INSERT OVERWRITE DIRECTORY
陳述式使用 Spark 檔案格式或 Hive Serde,以新值覆寫目錄中的現有資料。必須啟用 Hive 支援才能使用 Hive Serde。插入的列可以由值表達式指定,或由查詢產生。
語法
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 [ , … ] )
指定一個或多個用於寫入檔案格式的選項。
-
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 ( { 值
|
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;