我创建了一个外部配置单元表,如下所示:
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。这可以做到吗?如果可以,怎么做?
2条答案
按热度按时间p5cysglq1#
您可以使用下面的命令将任何表作为avro文件导出到本地位置或hdfs位置,而不考虑inputstorage。
从hive 0.11.0开始
https://cwiki.apache.org/confluence/display/hive/languagemanual+dml#languagemanualdml-将数据从查询写入文件系统
7gs2gvoe2#
你可以试试下面的选项。
插入覆盖表某个配置单元\u表\u avro选择*从某个配置单元\u表\u文本;