将Avro数据转换为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 和元数据,方法同上文。

时间: 2024-08-10 09:33:50

将Avro数据转换为Parquet格式的相关文章

将Access数据转换为XML格式

access|xml|数据|转换 问:我怎样才能将Microsoft Access数据表中的数据转换为XML格式? 答:以下应用程序可以帮助您将Access数据转换为XML格式:Access 2002. ADO 2.5和SQLXML.您可以通过Access 2002(Microsoft Office XP的一部分)查询数据或者使用XML格式保存数据.您可能想自动完成这个转换过程.ADO 2.5及其后续版本使您可以将数据打开到一个记录集中,然后以XML格式持有记录集,如以下代码所示: rs.Sav

[工具库]JOJSONBuilder工具类——一键把多个bean对象数据转换为JSON格式数据

本人大四即将毕业的准程序员(JavaSE.JavaEE.android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具. 我会在本博客中陆续发布一些平时可能会用到的工具. 代码质量可能不是很好,大家多担待! 代码或者思路有不妥之处,还希望大牛们能不吝赐教哈!   以下代码为本人原创,转载请注明: 本文转载,来自:http://www.cnblogs.com/tiantianbyconan/archive/2013/02/19/2917433.html   JOJSONBuilder工具类

[工具库]JOXMLBuilder工具类——一键把多个bean对象数据转换为XML格式数据

本人大四即将毕业的准程序员(JavaSE.JavaEE.android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具. 我会在本博客中陆续发布一些平时可能会用到的工具. 代码质量可能不是很好,大家多担待! 代码或者思路有不妥之处,还希望大牛们能不吝赐教哈!   以下代码为本人原创,转载请注明: 本文转载,来自:http://www.cnblogs.com/tiantianbyconan/archive/2013/02/19/2917398.html   JOXMLBuilder工具类:

thinkphp-JSON数据如何转换为时间格式?

问题描述 JSON数据如何转换为时间格式? 在THINKPHP模板页中输出{{deadline}} 输出时间, 但是输出的是 1441761664 类似这样的一串数字, 请问该如何转换为时间格式? 解决方案 JS转换JSON格式时间php从数据库中取数据转换为json格式绑定数据时,时间格式的转换 解决方案二: function jsonDateFormat(jsonDate) {//json日期格式转换为正常格式 try { var date = new Date(parseInt(jsonD

数据转换为XML、CSV或ECM格式类型如何应用各种阈值限制

InfoSphere Optim Data Masking Solution 提供了一种屏蔽数据源中使用的个人信息的方式.它为您提供一种为测试用途而使用逼真但虚构的数据的方法.在以前的 InfoSphere Optim 版本中,您可以将提取的数据 (.XF) 转换或屏蔽到另一个数据集中,或者将它们提取到一个业务对象 (CSV) 文件中.业务对象 (CSV) 文件格式使所有表数据均可存储为 CSV 文件中的一条记录.从 Optim 8.1 及其更高版本开始,您不仅能将提取的数据转换为 CSV.XM

如何将Avro数据加载到Spark

这是一篇翻译,原文来自:How to load some Avro data into Spark. 首先,为什么使用 Avro ? 最基本的格式是 CSV ,其廉价并且不需要顶一个一个 schema 和数据关联. 随后流行起来的一个通用的格式是 XML,其有一个 schema 和 数据关联,XML 广泛的使用于 Web Services 和 SOA 架构中.不幸的是,其非常冗长,并且解析 XML 需要消耗内存. 另外一种格式是 JSON,其非常流行易于使用因为它非常方便易于理解. 这些格式在

点云数据-如何把xyz文件格式转换为pcd格式?

问题描述 如何把xyz文件格式转换为pcd格式? 最近在接触点云数据方面的东西,但是手上的资料是xyz格式的,想把它转换为pcd格式的进行查看,请大家提提解决方案,怎么来处理,谢谢! 解决方案 1.将xyz文件转换为数据流 2.将数据流存为pcd的格式

【Hadoop Summit Tokyo 2016】文件格式的基准——Avro, JSON, ORC & Parquet

本讲义出自Owen O'Malley在Hadoop Summit Tokyo 2016上的演讲,主要分享了Avro, JSON, ORC & Parquet这些文件基本格式的相关内容,介绍了文件格式如何发挥不同的作用以及他们如何才能更好地发挥作用以及这些文件数据格式的各自的优点,还分享了如何使用真实的.多样化的数据集,并介绍了过度依赖类似的数据导致的弱点以及开放和审查基准.

如何将磁盘从FAT格式转换为NTFS格式

本文描述了如何将磁盘从FAT格式转换为NTFS格式.在确定使用何种文件系统前,您应当对它们各自的优势与局限性有所了解. 改变卷所使用的现有文件系统将是一项非常耗时的工作,因此,您应选择最适合自身长远需求的文件系统.如果决定使用一种不同的文件系统,那么,您必须首先对现有数据进行备份并使用新的文件系统重新对相应卷进行格式化.然而,当您希望将FAT或FAT32卷转换为NTFS卷时,可以无需重新对其进行格式化,即便在这种情况下,在开始转换前预先备份现有数据仍不失为一种明智的做法. 说明:某些老式程序可能