Avro技术应用_3. 利用 Hive 表处理 Avro 数据

本文介绍了如何利用Hive查询和处理Avro格式的数据,包括将Avro schema存储在文件中,通过HiveQL查询表的Schema,并展示了查询股票代码数量的示例。
摘要由CSDN通过智能技术生成
本文参考于:http://www.iteblog.com/archives/1007 & <Hadoop in Practice 2>

Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。它的主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。

Hive 0.9.1 版本新绑定Avro SerDe(序列化器/反序列化器的简称),它允许 Hive 从表中读取数据和写回表. 
Hive Versions
Avro Version
Hive 0.9.1 Avro 1.5.3
Hive 0.10, 0.11, and 0.12 Avro 1.7.1
Hive 0.13 and 0.14 Avro 1.7.5
如果需要在Hive中使用Avro,需要在$HIVE_HOME/lib目录下放入以下四个工具包:avro-1.7.1.jar、avro-tools-1.7.4.jar、 jackson-core-asl-1.8.8.jar、jackson-mapper-asl-1.8.8.jar。当然,你也可以把这几个包存在别的路径下面,但是你需要把这四个包放在CLASSPATH中。

  
  
  
你需要将Avro的schema复制到HDFS上, 并创建一个目录包含一些 Avro 股票记录的示例:
$ hadoop fs -put $HIP_HOME/schema schema
$ hadoop fs -mkdir stock_hive

$ hip hip.ch3.avro.AvroStockFileWrite \
    --input test-data/stocks.txt \
    --output stock_hive/stocks.avro
AvroStockFileWrite.java          stocks.txt
为了解析Avro格式的数据,我们可以在Hive建表的时候用下面语句:
需要注意的是,以下创建表的格式是 Hive 通用的格式,但是在 Hive 0.14 及以后的版本里,在DDL语句中可以直接使用"STORED AS AVRO" 来指定表为Avro格式。AvroSerDe 会根据 Hive 表的Schema 来创建适合的 Avro Schema。这大大增加了 Avro 在 Hive 中的可用性。
详细请参考:https://cwiki.apache.org/confluence/display/Hive/AvroSerDe
stock.avsc 2.1 在定义中指定 schema
hive> CREATE EXTERNAL TABLE tweets
    > COMMENT "A table backed by Avro data with the 
    >        Avro schema embedded in the CREATE TABLE statement"
    > 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值