spark读取kafka数据 createStream和createDirectStream的区别
spark读取kafka数据 createStream和createDirectStream的区别
1、KafkaUtils.createDstream
构造函数为KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] )
使用了receivers来接收数据,利用的是Kafka高层次的消费者api,对于所有的receivers接收到的数据将会保存在spark executors中,然后通过Spark Streaming启动job来处理这些数据,默认会丢失,可启用WAL日志,该日志存储在HDFS上
A、创建一个receiver来对kafka进行定时拉取数据,ssc的rdd分区和kafka的topic分区不是一个概念,故如果增加特定主体分区数仅仅是增加一个receiver中消费topic的线程数,并不增加spark的并行处理数据数量
B、对于不同的group和topic可以使用多个receivers创建不同的DStream
C、如果启用了WAL,需要设置存储级别,即KafkaUtils.createStream(….,StorageLevel.MEMORY_AND_DISK_SER)
2.KafkaUtils.createDirectStream
区别Receiver接收数据,这种方式定期地从kafka的topic+partition中查询最新的偏移量,再根据偏移量范围在每个batch里面处理数据,使用的是kafka的简单消费者api
优点:
A、 简化并行,不需要多个kafka输入流,该方法将会创建和kafka分区一样的rdd个数,而且会从kafka并行读取。
B、高效,这种方式并不需要WAL,WAL模式需要对数据复制两次,第一次是被kafka复制,另一次是写到wal中
C、恰好一次语义(Exactly-once-semantics),传统的读取kafka数据是通过kafka高层次api把偏移量写入zookeeper中,存在数据丢失的可能性是zookeeper中和ssc的偏移量不一致。EOS通过实现kafka低层次api,偏移量仅仅被ssc保存在checkpoint中,消除了zk和ssc偏移量不一致的问题。缺点是无法使用基于zookeeper的kafka监控工具
spark读取kafka数据 createStream和createDirectStream的区别相关推荐
- Spark Streaming读取Kafka数据的两种方式
Kafka在0.8和0.10之间引入了一种新的消费者API,因此,Spark Streaming与Kafka集成,有两种包可以选择: spark-streaming-kafka-0-8与spark-s ...
- spark把kafka数据写到hive
写入分区表: 准备工作:先建好分区表 方法一:(使用dataframe) 写数据到数据所在的位置,因为hive分区的本质就是分文件夹,先用spark把数据写到文件夹位置,然后执行sql添加分区 1.写 ...
- 《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
<!-- more --> 前言 之前其实在 <从0到1学习Flink>-- 如何自定义 Data Sink ? 文章中其实已经写了点将数据写入到 MySQL,但是一些配置化的 ...
- kafka学习_《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ
前言 之前有文章 <从0到1学习Flink>-- Flink 写入数据到 Kafka 写过 Flink 将处理后的数据后发到 Kafka 消息队列中去,当然我们常用的消息队列可不止这一种, ...
- Spark读取Hive数据的两种方式与保存数据到HDFS
Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...
- 写入mysql_《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
前言 之前其实在 <从0到1学习Flink>-- 如何自定义 Data Sink ? 文章中其实已经写了点将数据写入到 MySQL,但是一些配置化的东西当时是写死的,不能够通用,最近知识星 ...
- 【腾讯轻量应用服务器上部署kafka并通过flink读取kafka数据】
环境准备 经过1个月的摸索,最终选择在腾讯云上搭建一个学习环境.当时选择原因还是新用户有优惠(150左右3年),但现在看1核2g的配置勉强够用,建议后续小伙伴选择时最好是2核4g配置. 由于是单节点安 ...
- java读写德卡数据_Spark Streaming 读取Kafka数据写入ES
简介: 目前项目中已有多个渠道到Kafka的数据处理,本文主要记录通过Spark Streaming 读取Kafka中的数据,写入到Elasticsearch,达到一个实时(严格来说,是近实时,刷新时 ...
- java读avro的流_0016-Avro序列化反序列化和Spark读取Avro数据
1.简介 本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFrame进行操作. 1.1Apache Arvo是什么? Apach ...
- 0016-Avro序列化反序列化和Spark读取Avro数据
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.简介 本篇文章主要讲如何使用java生成Avro格式数据以及如何通过spark将Avro数据文件转换成DataSet和DataFra ...
最新文章
- 数组、ArrayList、链表、LinkedList
- simple k means
- Python 命令pip install pygame安装报错
- 获取MySQL数据库表结构的信息(字段名,字段类型,注释等)
- 安装与配置-以前的某个程序安装已在安装计算机上创建挂起的文件操作......
- 云图说 | 快速创建一个kubernetes集群
- 知乎Python后端面试总结
- ionic checkbox 精简用法
- guestfish修改镜像内容
- Julia: LaTeX 符号
- 锁相环的输入、输出——以PSCAD的PLL元件为例
- kuangbin字典树
- C语言: gotoxy函数
- 树莓派修改root密码
- matlab imrotate中心,matlab中imrotate
- 8.局部变量、成员变量、jvm垃圾回收机制 、封装、this关键字、匿名对象
- Longhorn云原生文件存储
- 数字绿土参加2017美国地球物理联合会(AGU)年会
- mysql mybatis批量删除,Mybatis批量删除多表
- c语言debug执行错误,C语言调试出错 0xC0000005: Access Violation.
热门文章
- 微服务与虚拟化技术博客总结
- 每天一点正则表达式积累之(?=X)和(?!X)测试(七)
- Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
- GitHub 标星 8w!这个开源面试总结屌爆了!
- jdbc连接oracle mysql_JDBC连接MySQL、Oracle和SQL server的配置
- php 删除判断是否存在,PHP – 判断utf-8编码是否存在BOM并自动删除
- java中成绩转换_成绩转换
- ecplise git修改提交信息_Eclipse中Git的使用说明之一:使用Git上传新项目到远程仓库...
- python中常用的函数有哪些_python里常用的函数类型
- 内江计算机职业学校有哪些,内江第二计算机职业中学有哪些专业