相关参数介绍:
参数
|
默认值
|
说明
|
---|---|---|
spark.sql.output.codec | none | 使用的序列化方式,如snappy,lzo等,默认为不压缩。 |
spark.sql.output.coalesceNum | 200 | 写入到指定目录的数据合并后文件的个数,仅当spark.sql.output.merge设为true时生效。 |
spark.sql.output.delimiter | “\t” | 仅当spark.sql.output.format为csv时生效,用于指定字段文本之间的分隔符,默认为制表符。 |
spark.sql.output.format | csv | 写入到指定目录的文件格式,支持spark原生支持的datasource,如parquet,orc,json,csv等,默认为csv,指定为csv时文本分隔符由spark.sql.output.delimiter指定。 |
spark.sql.output.merge | false | 是否合并输出文件,设为true时,写入到指定目录的数据会合并为spark.sql.output.coalesceNum指定的个数。 |
语法说明
insert overwrite语法如下:
insert [overwrite] directory <path> <query> |
其中:
- path为待写入的hdfs目录
- query为执行的SQL query。
- overwrite可选,指定则会覆盖指定目录原有内容,否则在指定目录非空时报错。
使用示例
以一张test表为例:
spark-sql> set spark.sql. output .format=orc; spark.sql. output .format orc Time taken: 1.331 seconds, Fetched 1 row(s) spark-sql> set spark.sql. output .codec=snappy; spark.sql. output .codec snappy Time taken: 1.222 seconds, Fetched 1 row(s) insert overwrite directory '/app/dc/spark/test_output' select * from people_orc1; Time taken: 4.537 seconds |
执行成功后,/app/dc/spark/test_output路径下将存在数据:
-rw-r--r-- 3 spark spark 0 2016-12-20 18:36 /app/dc/spark/test_output/_SUCCESS -rw-r--r-- 3 spark spark 328 2016-12-20 18:36 /app/dc/spark/test_output/part-r-00000-c0185b61-04bc-4168-8ba7-7e7357d4bb83.snappy.orc