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 ( { 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;