创建一个支持Avro数据的配置单元至少有两种不同的方法:
1)基于Avro架构创建表(在此示例中存储在hdfs中):
CREATE TABLE users_from_avro_schema
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'
TBLPROPERTIES ('avro.schema.url'='hdfs:///user/root/avro/schema/user.avsc');
Run Code Online (Sandbox Code Playgroud)
2)通过使用STORED AS AVRO子句显式指定hive列来创建表:
CREATE TABLE users_stored_as_avro(
id INT,
name STRING
) STORED AS AVRO;
Run Code Online (Sandbox Code Playgroud)
我是否正确在第一种情况下,users_from_avro_schema表的元数据不存储在Hive Metastore中,而是从SERDE类中推断出读取avro模式文件?或者表元数据存储在Metastore中,添加在表的创建上,但是什么是用于将hive元数据与Avro架构同步的策略?我的意思是两种情况:更新表元数据(添加/删除列)和通过更改avro.schema.url属性更新Avro架构.
在第二种情况下,当我调用时DESCRIBE FORMATTED users_stored_as_avro没有avro.schema.*定义属性,所以我不知道哪个Avro架构用于读/写数据,它是根据存储在Metastore中的表的元数据动态生成的吗?
这个Programming Hive书的片段讲述了关于SerDe类中列的信息,但另一方面,HIVE-4703从from deserializer列注释中删除了这个信息.我如何检查给定表(Metastore或Avro架构)的列类型的来源是什么?
使用JavaPairRDD(键,值)对,我想以定义的顺序处理与每个键关联的值(值比较器).是否可以在Apache Spark中使用?
使用Hadoop我会使用二级排序模式.我正在寻找一种解决方案,它可以处理一组不适合内存的值(即使是一组具有相同键的值)