小编tom*_*mek的帖子

当我使用'STORED AS AVRO'子句创建一个hive表时,存储Avro架构的位置?

创建一个支持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-4703from deserializer列注释中删除了这个信息.我如何检查给定表(Metastore或Avro架构)的列类型的来源是什么?

schema hive avro metastore

6
推荐指数
2
解决办法
7029
查看次数

Spark中的二级排序

使用JavaPairRDD(键,值)对,我想以定义的顺序处理与每个键关联的值(值比较器).是否可以在Apache Spark中使用?

使用Hadoop我会使用二级排序模式.我正在寻找一种解决方案,它可以处理一组不适合内存的值(即使是一组具有相同键的值)

apache-spark

4
推荐指数
1
解决办法
4061
查看次数

标签 统计

apache-spark ×1

avro ×1

hive ×1

metastore ×1

schema ×1