文档章节

将Avro数据转换为Parquet格式

水东流
 水东流
发布于 2016/07/09 08:17
字数 584
阅读 127
收藏 1

摘要: 本文主要测试将Avro数据转换为Parquet格式的过程并查看 Parquet 文件的 schema 和元数据。 准备 将文本数据转换为 Parquet 格式并读取内容,可以参考 Cloudera 的 MapReduce 例子:https://github.com/cloudera/parquet...

本文主要测试将Avro数据转换为Parquet格式的过程并查看 Parquet 文件的 schema 和元数据。

准备

将文本数据转换为 Parquet 格式并读取内容,可以参考 Cloudera 的 MapReduce 例子:https://github.com/cloudera/parquet-examples

准备文本数据 a.txt 为 CSV 格式:

1,2
3,4
4,5

准备 Avro 测试数据,可以参考 将Avro数据加载到Spark 一文。

本文测试环境为:CDH 5.2,并且 Avro、Parquet 组件已经通过 YUM 源安装。

将 CSV 转换为 Parquet

在 Hive 中创建一个表并导入数据:

create table mycsvtable (x int, y int)
row format delimited
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH 'a.txt' OVERWRITE INTO TABLE mycsvtable;

创建 Parquet 表并转换数据:

create table myparquettable (a INT, b INT)
STORED AS PARQUET
LOCATION '/tmp/data';

insert overwrite table myparquettable select * from mycsvtable;

查看 hdfs 上生成的 myparquettable 表的数据:

$ hadoop fs -ls /tmp/data
Found 1 items
-rwxrwxrwx   3 hive hadoop        331 2015-03-25 15:50 /tmp/data/000000_0

在 hive 中查看 myparquettable 表的数据:

hive (default)> select * from myparquettable;
OK
myparquettable.a  myparquettable.b
1 2
3 4
4 5
Time taken: 0.149 seconds, Fetched: 3 row(s)

查看 /tmp/data/000000_0 文件的 schema :

$ hadoop parquet.tools.Main schema /tmp/data/000000_0
message hive_schema {
  optional int32 a;
  optional int32 b;
}

查看 /tmp/data/000000_0 文件的元数据:

$ hadoop parquet.tools.Main meta /tmp/data/000000_0
creator:     parquet-mr version 1.5.0-cdh5.2.0 (build 8e266e052e423af5 [more]...

file schema: hive_schema
--------------------------------------------------------------------------------
a:           OPTIONAL INT32 R:0 D:1
b:           OPTIONAL INT32 R:0 D:1

row group 1: RC:3 TS:102
--------------------------------------------------------------------------------
a:            INT32 UNCOMPRESSED DO:0 FPO:4 SZ:51/51/1.00 VC:3 ENC:BIT [more]...
b:            INT32 UNCOMPRESSED DO:0 FPO:55 SZ:51/51/1.00 VC:3 ENC:BI [more]...

将 Avro 转换为 Parquet

使用 将Avro数据加载到Spark 中的 schema 和 json 数据,从 json 数据生成 avro 数据:

$ java -jar /usr/lib/avro/avro-tools.jar fromjson --schema-file twitter.avsc twitter.json > twitter.avro

将 twitter.avsc 和 twitter.avro 上传到 hdfs:

$ hadoop fs -put twitter.avsc
$ hadoop fs -put twitter.avro

使用 https://github.com/laserson/avro2parquet 将 avro 转换为 parquet 格式:

$ hadoop jar avro2parquet.jar twitter.avsc  twitter.avro /tmp/out

然后,在 hive 中创建表并导入数据:

create table tweets_parquet (username string, tweet string, timestamp bigint) 
STORED AS PARQUET;

load data inpath '/tmp/out/part-m-00000.snappy.parquet' overwrite into table tweets_parquet;

接下来,可以查询数据并查看 parquet 文件的 schema 和元数据,方法同上文。

本文转载自:https://yq.aliyun.com/articles/25504

水东流
粉丝 4
博文 51
码字总数 23858
作品 0
海淀
程序员
私信 提问
Apache Spark 2.4 内置的 Avro 数据源介绍

Apache Avro 是一种流行的数据序列化格式。它广泛用于 Apache Spark 和 Apache Hadoop 生态系统,尤其适用于基于 Kafka 的数据管道。从 Apache Spark 2.4 版本开始,Spark 为读取和写入 Avro...

Spark
2018/12/11
0
0
教程:Data Lake Analytics + OSS数据文件格式处理大全

0. 前言 Data Lake Analytics是Serverless化的云上交互式查询分析服务。用户可以使用标准的SQL语句,对存储在OSS、TableStore上的数据无需移动,直接进行查询分析。 目前该产品已经正式登陆阿...

金络
2018/08/07
0
0
Apache Avro as a Built-in Data Source in Apache Spark 2.4

Apache Avro 是一种流行的数据序列化格式。它广泛用于 Apache Spark 和 Apache Hadoop 生态系统,尤其适用于基于 Kafka 的数据管道。从 Apache Spark 2.4 版本开始(参见 Apache Spark 2.4 正...

开源大数据EMR
04/12
0
0
【译】Apache Spark 2.4内置数据源Apache Avro

原文链接: Apache Avro as a Built-in Data Source in Apache Spark 2.4 Apache Avro 是一种流行的数据序列化格式。它广泛使用于 Apache Spark 和 Apache Hadoop 生态中,尤其适用于基于 Ka...

开源大数据
2018/12/05
0
0
开源数据解析引擎 - Sparser

Sparser 是一个用于解析原始数据的解析引擎,由斯坦福大学开源,用于非结构化和半结构化的数据格式,例如 JSON、Avro 和 Parquet。 特性 用原始过滤器过滤后再解析,丢弃那些不需要用假阳性率...

匿名
2018/09/03
3.4K
4

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
18分钟前
2
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
29分钟前
2
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
37分钟前
5
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部