SparkStreaming API using DataSets and DataFrames  (New)

使用流式DataSets和流式DataFrames的API

  ◆ 1.创建流式DataFrames和流式Datasets(重点)
  ◆ 2.流式DataFrames/Datasets的操作(重点)
  ◆ 3.启动流查询(重点)
  ◆ 4.管理流查询(了解)
  ◆ 5.监控流查询(了解)
  ◆ 6.使用检查点从故障中恢复(重点)

1.创建流式DataFrames和流式Datasets(重点)

  ◆ 输入源(Input Source)   

    File Source
    Kafka Source
    Socket Source (测试)
    Rate Source (测试,实验性)

  ◆ 流式DataFrames/Datasets的结构类型推断与划分

FileSource:

◆ 须知:从目录中读取文件来作为输入数据流。
支持文件的格式有: text, csv, json, orc, parquet。
◆ 注意:支持glob路径,但不支持多个逗号分隔路径golbs。
◆ 属性:有五个option可以设置:
➢ path:输入目录的路径,对所有文件格式都是通用的
➢ maxFilesPerTrigger:在每个触发器中要考虑的新文件的最大数目(默认值:没有最大值)
➢ latestFirst:首先是否处理最新的新文件,当有大量的文件积压时是有用的(默认值:false)
➢ maxFileAge:默认值是7d 一周:如果latestFirst=true和maxFilesPerTrigger被设置,此配置不生效
➢ fileNameOnly:是否只基于文件名检查新文件而不是完整路径(默认值:false)
将这个值设置为“true”时,下面的文件将被视为同一个文件,
因为它们的文件名“dataset .txt”是相同的: “file:///dataset”
“s3://a/dataset”
“s3n://a/b/dataset”
“s3a://a/b/c/dataset””
◆ 其他配置可以参照以下这个类:
➢ org.apache.spark.sql.execution.streaming.FileStreamOptions

Kafka Source

◆ 须知:Kafka broker的版本需要是0.10.0或者更高版本。
◆ 要使用Kafka,项目的pom.xml需要引入Kafka的依赖
➢ <!-- spark-sql-kafka-0-10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql-kafka-0-10_2.11</artifactId>
<version>2.3.0</version>
</dependency>

◆ Options 必须设置:
➢ kafka.bootstrap.servers (指定kafka的访问地址host1:port1,host2:port2)
➢ subscribe/subscribepattern/assign(指定kafka中的主题)
➢ failondataloss(数据丢失报错)
➢ startingoffsets 读取数据的起始偏移量
➢ endingoffsets 读取数据的截止偏移量(在流式操作中此配置不生效)
◆ 其他配置可以参照以下这两个类:
➢ org.apache.kafka.clients.CommonClientConfigs
➢ org.apache.kafka.clients.consumer.ConsumerConfig

SocketSource

◆ 须知:从Socket连接中读取UTF8文本数据。在驱动器程序中监听服务网络端口。
◆ 注意:Socket Source只适用于测试,因为它不支持端到端的容错保证。
◆ 有三个option可以设置:
➢ host(必须)
➢ port(必须)
➢ includeTimestamp 默认值false 不生成时间戳日期
◆ 其他配置可以参照以下这个类:
➢ org.apache.spark.sql.execution.streaming.TextSocketSource

RateSource

◆ 须知:只支持测试
◆ 注意: 只有在连续模式中支持的选项才是Nuffice分区和RayScript第二个。

流式DataFrames/Datasets的结构类型推断与划分

  ◆ 默认情况下,基于文件源的结构化流要求必须指定schema,这种限制确保即
  使在失败的情况下也会使用一致的模式来进行流查询。
  ◆ 对于特殊用例,可以通过设置spark.sql.streaming.schemaInference = true。
  此时将会开启Spark自动类型推断功能。
  ◆ 注意:默认Spark sql中自动类型推断为启动状态。
  ◆ 当读取数据的目录中出现/key=value/ 的子目录时,Spark将自动递归这些子目
  录,产生分区发现。
  ◆ 如果用户提供的 schema 中出现了这些列, Spark将会根据正在读取的文件路
  径进行填充。
  ◆ 构成分区结构的目录必须在查询开始时是存在的,并且必须保持static 。
  ➢ 例如,当 /data/year=2015/ 存在时,可以添加 /data/year=2016/,但是更改
  分区列将无效的(即通过创建目录 /data/date=2016-04-17/ )。
  ◆ 注意:如果希望得到的数据可以按照/key=value/这种目录生成时,可以在输出
  数据时借助于partitionBy(“columnName”)

StructuredStreaming(New)的更多相关文章

  1. 2,StructuredStreaming的事件时间和窗口操作

    推荐阅读:1,StructuredStreaming简介 使用Structured Streaming基于事件时间的滑动窗口的聚合操作是很简单的,很像分组聚合.在一个分组聚合操作中,聚合值被唯一保存在 ...

  2. StructuredStreaming简单的例子(NewAPI)

    StructuredStreaming简单的例子(NewAPI)(wordCount) package com.briup.streaming.structed import org.apache.l ...

  3. StructuredStreaming编程模型

    StructuredStreaming编程模型 基本概念 ◆ Time ◆ Trigger ◆ Input ◆ Query ◆ Result ◆ Output  案例模型:实时处理流单词统计编程模型 ...

  4. spark structured-streaming 最全的使用总结

    一.spark structured-streaming  介绍 我们都知道spark streaming  在v2.4.5 之后 就进入了维护阶段,不再有新的大版本出现,而且 spark strea ...

  5. Structured-Streaming之窗口操作

    Structured Streaming 之窗口事件时间聚合操作 Spark Streaming 中 Exactly Once 指的是: 每条数据从输入源传递到 Spark 应用程序 Exactly ...

  6. StructuredStreaming基础操作和窗口操作

    一.流式DataFrames/Datasets的结构类型推断与划分 ◆ 默认情况下,基于文件源的结构化流要求必须指定schema,这种限制确保即 使在失败的情况下也会使用一致的模式来进行流查询. ◆ ...

  7. Spark学习之路 (十八)SparkSQL简单使用

    一.SparkSQL的进化之路 1.0以前: Shark 1.1.x开始: SparkSQL(只是测试性的)  SQL 1.3.x: SparkSQL(正式版本)+Dataframe 1.5.x: S ...

  8. Spark(十二)SparkSQL简单使用

    一.SparkSQL的进化之路 1.0以前:   Shark 1.1.x开始:SparkSQL(只是测试性的)  SQL 1.3.x:          SparkSQL(正式版本)+Datafram ...

  9. Flink 靠什么征服饿了么工程师?

    Flink 靠什么征服饿了么工程师? 2018-08-13    易伟平 阿里妹导读:本文将为大家展示饿了么大数据平台在实时计算方面所做的工作,以及计算引擎的演变之路,你可以借此了解Storm.Spa ...

随机推荐

  1. JavaFX布局神器-SceneBuilder

    JavaFX允许开发使用FXML来设计和布局界面,跟Qt和Android的布局有点类似,JavaFX用SceneBuilder来设计和布局界面. SceneBuilder最新的下载地址:https:/ ...

  2. Fortify Audit Workbench 笔记 Password Management: Password in Configuration File(明文存储密码)

    Password Management: Password in Configuration File(明文存储密码) Abstract 在配置文件中存储明文密码,可能会危及系统安全. Explana ...

  3. Python字符串更新

    Python字符串更新:截取字符串的某一部分 和 其他字符串进行拼接. 注:可以修改字符串的值,但修改的不是内存中的值,而是创建新的字符串. 1.使用字符串常量进行更新: # 使用字符串常量 strs ...

  4. Python循环控制语句

    Python循环控制语句:主要有三种,break.continue 和 pass 语句. break   语句 :在语句块执行过程中,终止循环.并跳出整个循环. continue 语句  :在语句执行 ...

  5. metaclass 拦截类的创建,并返回

    def upper_attr(future_class_name, future_class_parents, future_class_attr): #遍历属性字典,把不是__开头的属性名字变为大写 ...

  6. Redis 的 KEYS 命令不能乱用啊

    KESY 命令 时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数. Redis Keys 命令用于查找所有符合给定模式 pattern 的 k ...

  7. luogu P4284 [SHOI2014]概率充电器 期望 概率 树形dp

    LINK:概率充电器 大概是一个比较水的题目 不过有一些坑点. 根据期望的线性性 可以直接计算每个元件的期望 累和即为答案. 考虑统计每一个元件的概率的话 那么对其有贡献就是儿子 父亲 以及自己. 自 ...

  8. luogu P4725 多项式对数函数(多项式 ln)

    LINK:多项式对数函数 多项式 ln 如题 是一个模板题.刚学会导数 几个知识点 \([f(x)\cdot g(x)]'=f(x)'g(x)+f(x)g(x)',f(g(x))'=f'(g(x))g ...

  9. 文件权限和访问控制列表ACL (1)

    背景知识: 文件的权限主要针对三类对象进行定义 Owner: 属主u Group: 属组g Other: 其他o 每个文件针对每一类的访问者都设定了三种权限 r: Readable 读 w: Writ ...

  10. 032_go语言中的定时器

    代码演示 package main import "fmt" import "time" func main() { timer1 := time.NewTim ...