Spark avro insertInto文件扩展

时间:2017-08-28 18:31:22

标签: hadoop apache-spark hive

我有一个基于Avro的外部Hive表。

| CREATE EXTERNAL TABLE `temp_avro`(                 |
|   `string1` string COMMENT '')                     |
| PARTITIONED BY (                                   |
|   `string2` string)                                |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.serde2.avro.AvroSerDe'   |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'  |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' |
| LOCATION                                           |
|   'hdfs://xxx/xxx/temp_avro' |
| TBLPROPERTIES (                                    |
|   'transient_lastDdlTime'='1503938718')            |

我正在尝试使用Spark as:

写入此表
SELECT_0_0.toDF().write.mode("append").insertInto("temp_avro")

这样,avro文件就可以在没有avro扩展名的HDFS位置创建(名称为part-00001,part-00002等)。有没有办法让文件名扩展名为.avro

1 个答案:

答案 0 :(得分:0)

在保存结果之前,尝试使用coalesce将部件组合为一个

SELECT_0_0.toDF().coalesce(1).write.mode("append").insertInto("temp_avro")