温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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数据相关推荐

  1. java读avro的流_0016-Avro序列化反序列化和Spark读取Avro数据

    1.简介 本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFrame进行操作. 1.1Apache Arvo是什么? Apach ...

  2. Spark读取Hive数据的两种方式与保存数据到HDFS

    Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...

  3. flink sql 连接kafka avro序列化异常 Failed to deserialize Avro record ArrayIndexOutOfBoundsException

    在使用flinksql 解析复杂avro格式时候,遇到ArrayIndexOutOfBoundsException报错.问题的原因是所有非空字段都需要显示 not null,注意是每个层级的字段. 2 ...

  4. spark读取hbase数据

    import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.mapreduce.TableInpu ...

  5. spark 读取elasticsearch数据

    添加依赖 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsear ...

  6. 17 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded

    前言 // 呵呵 一天的车, 这就是过年吧!, 但是你还能看到 那一盏为你留的灯, 这可能就是羁绊吧 // 草稿箱 抽一波 呵呵 最近因为一次 测试造了一张 200w 数据记录的表 然后 业务上需要分 ...

  7. hive 分区_代码 | Spark读取mongoDB数据写入Hive普通表和分区表

    版本: 一.原始数据及Hive表 MongoDB数据格式 Hive普通表 Hive分区表 二. IDEA+Maven+Java 依赖 代码 工具类 三. 错误解决办法 1. IDEA会获取不到Hive ...

  8. avro数据序列化/反序列化

    序列化:把数据加工成特定的格式 反序列化:把特定格式的数据解析成对象 Avro提供了两种序列化和反序列化的方式:一种是通过Schema文件来生成代码的方式,一种是不生成代码的通用方式,这两种方式都需要 ...

  9. mongodb数据导入hbase,spark读取hbase数据分析

    为什么80%的码农都做不了架构师?>>>    使用mavn管理相关依赖包pom.xml <project xmlns="http://maven.apache.or ...

最新文章

  1. 关于生命、宇宙和万事万物的42个终极问题
  2. VMware宣布Big Data Extensions 2.0 GA
  3. Tungsten Fabric SDN — 软件项目编译与打包
  4. OpenStack-MitakaCentos7.2双节点搭建--(二)Keystone(认证服务)
  5. Return to the basic - 继承(Inheritation)
  6. 解决锚点在IE8中失效
  7. [Ubuntu] Your Firefox profile cannot be loaded. It may be missing or inaccessible
  8. Georgia Tech - machine learning 学习笔记一
  9. 错误变惊喜,10个有趣的404页面设计(转)
  10. Android SDK的级别
  11. 【bzoj1050】[HAOI2006]旅行comf
  12. 计算机底层知识之内存
  13. java技术路线思维导图_最简单的思维导图+流程图制作神器processon
  14. 【中级计量经济学】Lecture 3 非球形扰动
  15. 软件项目规模估算的3种方法---Loc估算法、FP估算法、PERT估算法
  16. Android 复杂的手势处理利用GestureOverView
  17. 网站安全不可忽视--一个收费网站的破解过程
  18. 江苏学生考计算机要多少分录取,江苏高考多少名可以上211 最低要考多少分
  19. mybatis 的 insert
  20. 三创赛优秀作品_全国电子商务三创赛省赛优秀作品.doc

热门文章

  1. Java Servlet关键点详解
  2. dede日期时间标签调用大全
  3. WindowsPhone7入手,实在的照片
  4. 三星二级菜单_你变我也变,神奇的excel二级联动下拉菜单
  5. ubuntu18.04安装pycharm专业版
  6. Java——String类中的compareTo方法总结
  7. C# WPF 中用代码模拟鼠标和键盘的操作
  8. noip2009 靶形数独
  9. Android之自定义标题
  10. XCode4.3.3 + iOS5.1 无证书开发并生成app、ipa文件