众所周知,Structured Streaming默认支持Kafka 0.10,没有提供针对Kafka 0.8的Connector,但这对高手来说不是事儿,于是有个Hortonworks的邵大牛(前段时间刚荣升Spark Committer)给出了一个开源的第三方解决方案:

https://github.com/jerryshao/spark-kafka-0-8-sql

不过下载下来后,编译不通过:

看来有时候,牛人办事也不一定靠谱,当然从github中的issue记录看,邵大牛认为是spark方面做了改动:

https://github.com/jerryshao/spark-kafka-0-8-sql/issues/7

不过想基于Structured Streaming使用Kafka 0.8的人不在少数,另有祝威廉把这个问题给修正了:

https://github.com/allwefantasy/streamingpro/tree/master/streamingpro-spark-2.0/src/main/java/com/hortonworks/spark/sql/kafka08

使用方式:

    val kafkaDf = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "10.20.0.1:9093").option("startingoffset", "latest").option("subscribe", engineConfig.sourceTopic).load()

由于Kafka 0.10才提供了时间戳功能,所以尽管经过上面的折腾,Structured Streaming可以和Kafka 0.8进行Connect,但是从Kafka 0.8中读取的记录,默认是不带TimeStamp的!

从代码中,我们可以看到,只有如下5个数据类型:

    StructField("key", BinaryType),StructField("value", BinaryType),StructField("topic", StringType),StructField("partition", IntegerType),StructField("offset", LongType)

如果要使用Structured Streaming的基于Event Time功能,以及Watermark特性,由于没法直接从Kafka 0.8的数据中提取到TimeStamp,需要通过转换进行内部记录时间戳的提取。

再次感谢邵大牛及祝大牛的无私奉献!

转载于:https://www.cnblogs.com/liugh/p/7475934.html

Structured Streaming从Kafka 0.8中读取数据的问题相关推荐

  1. Flink使用KafkaSource从Kafka消息队列中读取数据

    Flink使用KafkaSource从Kafka消息队列中读取数据 使用KafkaSource从Kafka消息队列中读取数据 1.KafkaSource创建的DataStream是一个并行的DataS ...

  2. Flink从Kafka 0.8中读取多个Topic时的问题

    Flink提供了FlinkKafkaConsumer08,使用Kafka的High-level接口,从Kafka中读取指定Topic的数据,如果要从多个Topic读取数据,可以如下操作: 1.appl ...

  3. 2021年大数据Spark(四十九):Structured Streaming 整合 Kafka

    目录 整合 Kafka 说明 Kafka特定配置 ​​​​​​​KafkaSoure 1.消费一个Topic数据 2.消费多个Topic数据 3.消费通配符匹配Topic数据 ​​​​​​​Kafka ...

  4. Structured Streaming整合kafka

    Structured Streaming整合kafka Spark2.0以后开始推出Structured Streaming,详情参考上文Spark2.0 Structured Streaming.本 ...

  5. 大数据Spark Structured Streaming集成 Kafka

    目录 1 Kafka 数据消费 2 Kafka 数据源 3 Kafka 接收器 3.1 配置说明 3.2 实时数据ETL架构 3.3 模拟基站日志数据 3.4 实时增量ETL 4 Kafka 特定配置 ...

  6. 中读取数据_Flink入门实战 (中)

    一.Flink 流处理 API 1.Environment getExecutionEnvironment 创建一个执行环境,表示当前执行程序的上下文. 如果程序是独立调用的,则 此方法返回本地执行环 ...

  7. VC++中从txt文本中读取数据并且存到二维数组中

    这几天因为在做作业,所以不仅会想到这一类有关的问题.现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中.,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我 ...

  8. vc++从txt文件中读取数据

    数值分析课上老师说要将数据写在txt文件上,然后让程序从txt文件中读取数据.让本来C++已经遗忘了很久的我们无从下手,在网上也查看了很多,发现大多都是扯淡,放在VC++编辑器上发现并不能运行,不知道 ...

  9. c 语言如何处理表格文件中的数据库,C#程序从Excel表格中读取数据并进行处理

    今天做了一个Excel表格数据处理的事情,因为数据量表较大(接近7000条)所以处理起来有点麻烦,于是写了一个程序, 先将程序记下以便将来查找. using System; using System. ...

最新文章

  1. 批量建立用户和设置密码,批量删除用户脚本
  2. B4010 菜肴制作 拓扑排序(附随机跳题代码)
  3. openlayers3 根据经纬度 自动画框_Power Query获取上海市各区的经纬度
  4. springMVC+Mybatis实现查询分页
  5. kettle查询mysql获取uuid_java中调用kettle转换文件
  6. 斜度符号标注_机械图纸尺寸标注规则
  7. [数据结构]《数据结构教程》多语言微课版创作计划
  8. 国人走向世界的一个很好的艺术与设计网站
  9. python pytz下载_python:pytz包安装问题:ImportError:没有名为pytz的模块
  10. libtorrent安装windows版
  11. 深入理解之border属性(第一期)
  12. 如何理解时间复杂度和空间复杂度
  13. 关于node-pyg的路径问题导致build失败
  14. JavaScript 基础(002_Event Bubbling)
  15. linux 删除文件名带括号的文件
  16. WIN10任务栏的喇叭点了没反应,但是声音是正常的,就是不能调节音量
  17. 互动直播之WebRTC服务器Kurento实战
  18. 持续集成:Jenkins Pipeline共享库定义和使用
  19. Lambda 表达式的常用操作示例
  20. 【批处理DOS-CMD命令-汇总和小结】-cmd扩展命令、扩展功能(cmd /e:on、cmd /e:off)

热门文章

  1. 基于比特币现金的Token逐梦而来
  2. sql根据年月日查询注册数或者和值
  3. 怎么高效的运用金蝶软件
  4. mysql数据库锁定机制
  5. 外文翻译 《How we decide》赛场上的四分卫 第三节
  6. linux摄像头 sdl,Linux音视频(SDL与YUV)
  7. php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数
  8. 三十分钟理解:双调排序Bitonic Sort,适合并行计算的排序算法
  9. Matlab中fileter和conv的区别及卷积的计算方法
  10. 字符串异或c语言编写,C语言实现字符串的异或校验.doc