0016-Avro序列化反序列化和Spark读取Avro数据
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.简介
本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFrame进行操作。
1.1Apache Arvo是什么?
Apache Avro 是一个数据序列化系统,Avro提供Java、Python、C、C++、C#等语言API接口,下面我们通过java的一个实例来说明Avro序列化和反序列化数据。
- 支持丰富的数据结构
- 快速可压缩的二进制数据格式
- 存储持久数据的文件容器
- 远程过程调用(RPC)
- 动态语言的简单集成
2.Avro数据生成
2.1定义Schema文件
1.下载avro-tools-1.8.1.jar
Avro官网:http://avro.apache.org/ Avro版本:1.8.1 下载Avro相关jar包:avro-tools-1.8.1.jar 该jar包主要用户将定义好的schema文件生成对应的java文件
2.定义一个schema文件,命名为CustomerAdress.avsc
{
"namespace":"com.peach.arvo",
"type": "record",
"name": "CustomerAddress",
"fields": [
{"name":"ca_address_sk","type":"long"},
{"name":"ca_address_id","type":"string"},
{"name":"ca_street_number","type":"string"},
{"name":"ca_street_name","type":"string"},
{"name":"ca_street_type","type":"string"},
{"name":"ca_suite_number","type":"string"},
{"name":"ca_city","type":"string"},
{"name":"ca_county","type":"string"},
{"name":"ca_state","type":"string"},
{"name":"ca_zip","type":"string"},
{"name":"ca_country","type":"string"},
{"name":"ca_gmt_offset","type":"double"},
{"name":"ca_location_type","type":"string"}
]
}
Schema说明:
- namespace:在生成java文件时import包路径
- type:omplex types(record, enum,array, map, union, and fixed)
- name:生成java文件时的类名
- fileds:schema中定义的字段及类型
3.生成java代码文件
使用第1步下载的avro-tools-1.8.1.jar包,生成java code
java -jar avro-tools-1.8.1.jar compile schema CustomerAddress.avsc .
末尾的"."代表java code 生成在当前目录,命令执行成功后显示:
2.2使用Java生成Avro文件
1.使用Maven创建java工程
在pom.xml文件中添加如下依赖
org.apache.avro
avro
1.8.1
2.新建java类GenerateDataApp,代码如下
动态生成avro文件,通过将数据封装为GenericRecord对象,动态的写入avro文件,以下代码片段:
3. Spark读Avro文件
1.使用Maven创建一个scala工程
在pom.xml文件中增加如下依赖
2.Scala事例代码片段
3.Spark运行结果
源码地址:
https://github.com/javaxsky/avrotospark
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
0016-Avro序列化反序列化和Spark读取Avro数据相关推荐
- java读avro的流_0016-Avro序列化反序列化和Spark读取Avro数据
1.简介 本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFrame进行操作. 1.1Apache Arvo是什么? Apach ...
- Spark读取Hive数据的两种方式与保存数据到HDFS
Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...
- flink sql 连接kafka avro序列化异常 Failed to deserialize Avro record ArrayIndexOutOfBoundsException
在使用flinksql 解析复杂avro格式时候,遇到ArrayIndexOutOfBoundsException报错.问题的原因是所有非空字段都需要显示 not null,注意是每个层级的字段. 2 ...
- spark读取hbase数据
import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.mapreduce.TableInpu ...
- spark 读取elasticsearch数据
添加依赖 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsear ...
- 17 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded
前言 // 呵呵 一天的车, 这就是过年吧!, 但是你还能看到 那一盏为你留的灯, 这可能就是羁绊吧 // 草稿箱 抽一波 呵呵 最近因为一次 测试造了一张 200w 数据记录的表 然后 业务上需要分 ...
- hive 分区_代码 | Spark读取mongoDB数据写入Hive普通表和分区表
版本: 一.原始数据及Hive表 MongoDB数据格式 Hive普通表 Hive分区表 二. IDEA+Maven+Java 依赖 代码 工具类 三. 错误解决办法 1. IDEA会获取不到Hive ...
- avro数据序列化/反序列化
序列化:把数据加工成特定的格式 反序列化:把特定格式的数据解析成对象 Avro提供了两种序列化和反序列化的方式:一种是通过Schema文件来生成代码的方式,一种是不生成代码的通用方式,这两种方式都需要 ...
- mongodb数据导入hbase,spark读取hbase数据分析
为什么80%的码农都做不了架构师?>>> 使用mavn管理相关依赖包pom.xml <project xmlns="http://maven.apache.or ...
最新文章
- 关于生命、宇宙和万事万物的42个终极问题
- VMware宣布Big Data Extensions 2.0 GA
- Tungsten Fabric SDN — 软件项目编译与打包
- OpenStack-MitakaCentos7.2双节点搭建--(二)Keystone(认证服务)
- Return to the basic - 继承(Inheritation)
- 解决锚点在IE8中失效
- [Ubuntu] Your Firefox profile cannot be loaded. It may be missing or inaccessible
- Georgia Tech - machine learning 学习笔记一
- 错误变惊喜,10个有趣的404页面设计(转)
- Android SDK的级别
- 【bzoj1050】[HAOI2006]旅行comf
- 计算机底层知识之内存
- java技术路线思维导图_最简单的思维导图+流程图制作神器processon
- 【中级计量经济学】Lecture 3 非球形扰动
- 软件项目规模估算的3种方法---Loc估算法、FP估算法、PERT估算法
- Android 复杂的手势处理利用GestureOverView
- 网站安全不可忽视--一个收费网站的破解过程
- 江苏学生考计算机要多少分录取,江苏高考多少名可以上211 最低要考多少分
- mybatis 的 insert
- 三创赛优秀作品_全国电子商务三创赛省赛优秀作品.doc