我创建了一个这样的外部配置单元表:
CREATE EXTERNAL TABLE some_hive_table
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/path/some_hive_table/'
TBLPROPERTIES ('avro.schema.literal'='{json schema here}');
我想对其运行一些配置单元查询并将该数据导出到 avro 文件中。我知道我可以像这样导出数据:
INSERT
OVERWRITE DIRECTORY '/hdfs/path/avrofileoutput/'
SELECT * FROM some_hive_table;
但我希望我的输出文件是 avro 文件 - 而不是 csv。这可以做到吗?如果可以,怎么做?
最佳答案
您可以使用以下命令将任何表导出为 AVRO 文件,而不考虑 InputStorage 到本地位置或 HDFS 位置。
从 Hive 0.11.0 开始
INSERT OVERWRITE LOCAL DIRECTORY '<Local directory>'
STORED AS AVRO SELECT * FROM some_hive_table;
关于sql - 将配置单元表导出到 .avro 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22161536/