将Hive表导出为.avro文件

3

我创建了一个外部 Hive 表,如下所示:

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}');

我想在其中运行一些Hive查询,并将数据导出到一个Avro文件中。我知道可以像这样导出数据:

INSERT
OVERWRITE DIRECTORY '/hdfs/path/avrofileoutput/' 
SELECT * FROM some_hive_table; 

但我希望我的输出文件是一个avro文件 - 而不是csv文件。是否可以实现,如果可以,如何实现?

2个回答

4

1
你可以尝试下面的选项。

将以下内容插入到Hive表some_hive_table_avro中并覆盖原有数据:select * from some_hive_table_text;


但是它导出到另一个Hive表。我想要导出到一个Avro文件。这个表是否创建了一个底层的Avro文件,这就是我要找的东西吗? - Tucker
是的,您可以使用底层的.avro文件。如果您仍希望它成为单个avro文件,则可以尝试以下命令。hadoop fs -cat /<path_to_avro_files>/* > student.avro - Venkatesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接