一、流式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”)

二、流式DataFrames/Datasets的操作

  ◆ 基础操作-Selection, Projection, Aggregation
  ◆ 基于Event Time的窗口操作
  ◆ 连接操作
  ◆ 流式去重操作
  ◆ 任意状态运算
  ◆ 不支持操作

2.1 基础操作-Selection, Projection, Aggregation

  ◆ DataFrames/Datasets上的大多数常用操作都支持流式运算。(后面在讨论不
  支持的操作)
  ◆ 例如:
  ➢ case class DeviceData(device: String, deviceType: String, signal: Double, time: DateTime) ➢ val df: DataFrame = …
  ➢ val ds: Dataset[DeviceData] = df.as[DeviceData]
  ➢ df.select("device").where("signal > 10") ➢ ds.filter(_.signal > 10).map(_.device) ➢ df.groupBy("deviceType").count() ➢ import org.apache.spark.sql.expressions.scalalang.typed
  ➢ ds.groupByKey(_.deviceType).agg(typed.avg(_.signal))

  ◆ 可以注册一个流式DataFrames/DataSets作为临时视图,使用SQL命令做查
  询操作。
  ➢ df.createOrReplaceTempView(“ updates”) ➢ spark.sql(“ select count(*) from updates”) ➢ df.isStreaming

2.2基于Event Time的窗口操作

  ◆ 基于结构化流的滑动事件时间窗口的聚合操作比较简单,与分组聚合非常相似。
  在分组聚合中,按照用户指定的列进行分组聚合。在基于窗口的聚合中,按照
  每个窗口进行聚合操作

  ◆ 案例模型:实时处理流单词统计的窗口操作示意图

   

  ◆ 窗口操作类似于分组操作
  ◆ 例子:可以使用groupBy()和window()操作来表示窗口聚合。 ➢ import spark.implicits._ ➢ val words: DataFrame = ... // schema { timestamp: Timestamp, word: String }
  ➢ val windowedCounts = words.groupBy( window($"timestamp"
  , "10 minutes"
  , "5 minutes"), $"word" ).count()

  

StructuredStreaming基础操作和窗口操作的更多相关文章

  1. Structured-Streaming之窗口操作

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

  2. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

  3. streaming窗口操作

    之前一直对窗口操作不太理解.认为spark streaming本身已经是分片计算,还需要窗口操作干啥. 窗口操作最为简单易懂的场景就是,在M时间间隔计算一次N时间内的热搜.当M=N的时候,就像上述所说 ...

  4. jQuery碎语(1) 基础、选择要操作的元素、处理DOM元素

    1.基础 jquery对象集: $():jquery对象集合 获取jquery对象集中的元素: 使用索引获取包装器中的javascript元素:var temp = $('img[alt]')[0] ...

  5. 搞定vim的窗口操作

    最近在给学生演示数据结构代码时,发现用一般的方法总会有不方便,如果使用ide又觉得太浪费了,后来觉得用vim就够了,使用buffer总会需要页面调来跳出,学生看起来容易迷糊.所以就研究了下vim的窗口 ...

  6. Update(Stage4):sparksql:第3节 Dataset (DataFrame) 的基础操作 & 第4节 SparkSQL_聚合操作_连接操作

    8. Dataset (DataFrame) 的基础操作 8.1. 有类型操作 8.2. 无类型转换 8.5. Column 对象 9. 缺失值处理 10. 聚合 11. 连接 8. Dataset ...

  7. python基础操作以及hdfs操作

    目录 前言 基础操作 hdfs操作 总结 一.前言        作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...

  8. vue.js初级入门之最基础的双向绑定操作

    首先在页面引入vue.js以及其他需要用到的或者可能要用到的插件(这里我多引用了bootstrap和jquery) 引用的时候需要注意文件的路径,准备工作这样基本就完成了,下面正式开始入门. vue. ...

  9. 转-JS子窗口创建父窗口操作父窗口

    Javascript弹出子窗口  可以通过多种方式实现,下面介绍几种方法 (1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 其用法为: window ...

随机推荐

  1. Python快速入门PDF高清完整版免费下载|百度云盘

    百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...

  2. PHP min() 函数

    实例 通过 min() 函数查找最小值: <?php高佣联盟 www.cgewang.comecho(min(2,4,6,8,10) . "<br>");echo ...

  3. PHP xml_parser_set_option() 函数

    定义和用法 xml_parser_set_option() 函数为 XML 解析设置选项.高佣联盟 www.cgewang.com 如果成功,该函数则返回 TRUE.如果失败,则返回 FALSE. 语 ...

  4. PDO::getAttribute

    PDO::getAttribute — 取回一个数据库连接的属性(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 mixed PDO::getAttrib ...

  5. HDFS---NameNode管理元数据及HA模式

    NameNode主要保存了下面的内容 1-维护元数据信息.Block和文件之间的关系,即某一个特定文件都有哪些Block: 2-每一个Block存储在什么位置(DataNode上面): 3-维护HDF ...

  6. LeetCode刷题时引发的思考:Java中ArrayList存放的是值还是引用?

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 今天我在刷LeetCode ...

  7. [转]Nginx限流配置

    原文:https://www.cnblogs.com/biglittleant/p/8979915.html 作者:biglittleant 1. 限流算法 1.1 令牌桶算法 算法思想是: 令牌以固 ...

  8. Sharding-JDBC实现读写分离

    参考资料:猿天地  https://mp.weixin.qq.com/s/kp2lJHpTMz4bDWkJYjVbOQ  作者:尹吉欢 技术选型:SpringBoot + Sharding-JDBC ...

  9. MVVM 框架

    问题: 1.MVVM 的定义 M (Model): 数据来源,服务器上业务逻辑操作 V (View): 界面,页面 VM (ViewModel): view 和 model 的核心枢纽,如 vue.j ...

  10. SAFe必备——提高团队敏捷性

    规模化敏捷之于项目群,就像Scrum之于敏捷团队.为了创建高质量业务解决方案,企业需要提高自身能力,提升团队和技术敏捷性,实现真正的规模化敏捷. 敏捷发布火车 实现团队和技术敏捷性,首先需要敏捷团队围 ...