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. Python Python Python 100个练手项目

    1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版)7.多线程+代理池爬 ...

  2. HTML基础和标签

    HTML 1.属性 在开始标签中写的键值对 2.颜色 ①英文 ②16进制代码  例如: #cccccc  #ccc (缩写) #000000 ③Rgba(0~255,255,255,0~1) 0~1代 ...

  3. 利用div显示隐藏实现的分页效果

    实现步骤: 1.创建对应切换div <div class="bottom_daohang"> <div class="bottom_daohang_zo ...

  4. 第十四章 JDK新特性回顾

    14.1.JDK5新特性回顾 自动装箱.拆箱 静态导入 增强for循环 可变参数 枚举 泛型 元数据 14.2.JDK7新特性回顾 对Java集合(Collections)的增强支持 在switch中 ...

  5. JVM详解之:汇编角度理解本地变量的生命周期

    目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一下今 ...

  6. python 安装 0x000007b错误解决及VC++ 安装第三方库报红

    dll 版本不对 dll 可能是 32 位和 64 位的 ,安装的可能不对 下载 DirectX_DLL修复工具v3.5增强版 进行修复 VC++ 安装第三方库报红问题 使用 VS 2017 或者 V ...

  7. 二维线段树->树套树

    现在上真正的二维线段树 毕竟 刚刚那个是卡常 过题我们现在做一个更高级的做法二维线段树. 大体上维护一颗x轴线段树 然后在每个节点的下方再吊一颗维护y轴的线段树那么此时我们整个平面就被我们玩好了. 这 ...

  8. js数组常用api

    数组创建 第一种,使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(10); // 创建一个包含10项的数组 ...

  9. 银弹谷V百科|使用技巧:Vbase技巧二则之一

    银弹谷零代码开发V平台提供访问窗体的短地址链接 格式:http://IP:port/form/componentCode/windowCode  例子: 默认地址:http://IP:port/mod ...

  10. PEP8之常用编码规范-摘自官网

    PEP8是广泛应用于Python编码中的规范,这里只会记录最重要的一部分:摘自官网 使用4个空格缩进,不要使用制表符. 4个空格是一个在小缩进(允许更大的嵌套深度)和大缩进(更容易阅读)的一种很好的折 ...