我想将数据从服务器导出到配置单元。 我有一个java级嵌套数据。 我成功地使用Avro Tools ReflectData创建了一个avro架构,并使用ReflectDatumWriter在avro文件中写出数据。在Hive中,我能够创建一个表并使用
指定模式TBLPROPERTIES
('avro.schema.url'='hdfs:///schema.avsc');
我可以看到有方法以镶木地板格式导出相同的数据 http://blog.cloudera.com/blog/2014/05/how-to-convert-existing-data-into-parquet/
让我说完成并在镶木地板文件中有相同的数据.. 如何在Hive中查询此导出镶木地板数据? 但是我如何为hive指定架构? 我不想在整个嵌套模式的hive中编写一个巨大的create table语句。如何为模式中的某些成员指定空值? 我有办法直接创建像avro架构一样的镶木地板架构,并使用create table statement?
给Hive答案 0 :(得分:0)
要查询配置单元中的数据,您可以创建配置单元外部表并指定文件的位置。喜欢这个
CREATE EXTERNAL TABLE XXX (...)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat"
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat"
LOCATION '/you/location/here';
没有办法不指定此语句,因为独立于hive Metastore的文件生成以及AVRO所能做的只是生成数据文件