Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。

  bin/spark-submit --class Streaming /home/wx/Stream.jar
  hadoop fs -put /home/wx/123.txt /user/wx/

文本123.txt

  1. NOTICE:07-26 logId[0072]
  2. NOTICE:07-26 logId[0073]
  3. NOTICE:07-26 logId[0074]
  4. NOTICE:07-26 logId[0075]
  5. NOTICE:07-26 logId[0076]
  1. import org.apache.spark._
  2. import org.apache.spark.streaming._
  3. import org.apache.spark.streaming.StreamingContext._
  4. import org.apache.spark.sql.SparkSession
  5.  
  6. object Streaming {
  7. def main(args: Array[String]): Unit = {
  8.  
  9. val conf = new SparkConf().setMaster("local[2]").setAppName("RegexpExtract")
  10. val ssc = new StreamingContext(conf, Seconds(1))
  11.  
  12. println("hello world")
  13.  
  14. val lines = ssc.textFileStream("hdfs://name-ha/user/wx/")
  15.  
  16. val ds = lines.flatMap(_.split("\n"))
  17.  
  18. ds.print()
  19.  
  20. ds.foreachRDD { rdd =>
  21.  
  22. // Get the singleton instance of SparkSession
  23. val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate()
  24. import spark.implicits._
  25.  
  26. // Convert RDD[String] to DataFrame
  27. val wordsDataFrame = rdd.toDF("str_col")
  28.  
  29. // Create a temporary view
  30. wordsDataFrame.createOrReplaceTempView("df")
  31.  
  32. // Do word count on DataFrame using SQL and print it
  33. val wordCountsDataFrame =
  34. spark.sql(raw"""
  35. select str_col,
  36. regexp_extract(str_col,"NOTICE:\\d{2}",0) notice,
  37. regexp_extract(str_col,"logId\\[(.*?)\\]",0) logId
  38. from df""")
  39. wordCountsDataFrame.show(false)
  40. }
  41.  
  42. ssc.start() // Start the computation
  43. ssc.awaitTermination() // Wait for the computation to terminate
  44. }
  45. }

执行结果

  1. hello world
  2. -------------------------------------------
  3. Time: 1501501752000 ms
  4. -------------------------------------------
  5.  
  6. NOTICE:07-26 logId[0072]
  7. NOTICE:07-26 logId[0073]
  8. NOTICE:07-26 logId[0074]
  9. NOTICE:07-26 logId[0075]
  10. NOTICE:07-26 logId[0076]
  11.  
  12. +------------------------+---------+-----------+
  13. |str_col |notice |logId |
  14. +------------------------+---------+-----------+
  15. |NOTICE:07-26 logId[0072]|NOTICE:07|logId[0072]|
  16. |NOTICE:07-26 logId[0073]|NOTICE:07|logId[0073]|
  17. |NOTICE:07-26 logId[0074]|NOTICE:07|logId[0074]|
  18. |NOTICE:07-26 logId[0075]|NOTICE:07|logId[0075]|
  19. |NOTICE:07-26 logId[0076]|NOTICE:07|logId[0076]|
  20. +------------------------+---------+-----------+
  21.  
  22. -------------------------------------------
  23. Time: 1501501770000 ms
  24. -------------------------------------------

Spark Streaming之dataset实例的更多相关文章

  1. 大数据开发实战:Spark Streaming流计算开发

    1.背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop生态对实时和离线数据处理的一套完整处理解决方案.除了此套解决方案之外,还有一种非常流行的而且完整的离线和 实时数 ...

  2. 5.Spark Streaming流计算框架的运行流程源码分析2

    1 spark streaming 程序代码实例 代码如下: object OnlineTheTop3ItemForEachCategory2DB { def main(args: Array[Str ...

  3. Spark(五) -- Spark Streaming介绍与基本执行过程

    Spark Streaming作为Spark上的四大子框架之一,肩负着实时流计算的重大责任 而相对于另外一个当下十分流行的实时流计算处理框架Storm,Spark Streaming有何优点?又有何不 ...

  4. spark streaming 接收kafka消息之四 -- 运行在 worker 上的 receiver

    使用分布式receiver来获取数据使用 WAL 来实现 exactly-once 操作: conf.set("spark.streaming.receiver.writeAheadLog. ...

  5. Spark Streaming实例

    Spark Streaming实例分析 2015-02-02 21:00 4343人阅读 评论(0) 收藏 举报  分类: spark(11)  转载地址:http://www.aboutyun.co ...

  6. Spark源码系列(八)Spark Streaming实例分析

    这一章要讲Spark Streaming,讲之前首先回顾下它的用法,具体用法请参照<Spark Streaming编程指南>. Example代码分析 val ssc = )); // 获 ...

  7. Spark Streaming 结合FlumeNG使用实例

    SparkStreaming是一个对实时数据流进行高通量.容错处理的流式处理系统,可以对多种数据源(如Kdfka.Flume.Twitter.Zero和TCP 套接字)进行类似map.reduce.j ...

  8. spark streaming 实例

    spark-streaming读hdfs,统计文件中单词数量,并写入mysql package com.yeliang; import java.sql.Connection; import java ...

  9. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

随机推荐

  1. 使用cefsharp 浏览器放大

    (1)如果浏览器位置有问题,需要设置 Cef.EnableHighDPISupport(); (2)如果要放大浏览器,需要设置  browser.SetZoomLevel(1.25); Chromiu ...

  2. vue-cli配置多入口多出口,实现一个项目两个访问地址,区分不同上线环境

    最近工作中需要把项目分割成两块,一块需要跑在微信中,通过微信jdk获取用户资料默认登录,一部分需要给原生app做webview的内嵌页面,当然这部分内容是不跑在微信中的. 所以我想到了把项目分成两部分 ...

  3. [Python设计模式] 第12章 基金理财更省事——外观模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目1 用程序模拟股民直接炒股的代码,比如股民投资了股票1,股票2,股票3,国债 ...

  4. Guava Preconditions 工具参数前置校验

    guava 提供 Preconditions  作为代码校验的工具类,用来简化开发中对代码的校验或预处理,在逻辑开始前进行合理性校验,避免参数传入过深导致的数据错误. 并且能够在不符合校验条件的地方, ...

  5. Gitlab团队协作流程

    一:加入群组 项目管理员添加用户到群组,赋予权限(owner.developer...). 二:拉取项目,建立分支 通过git clone拉取项目到本地,通过终端打开项目目录,创建自己的分支,并推送到 ...

  6. spring+springmvc+ibatis整合注解方式实例

    需求说明 实现用户通过数据库验证登录需求.採用 Myeclipse+Tomcat 6.0+Mysql 5.0+JDK 1.6 2.数据库表 开发所用是Mysql数据库,仅仅建立单张用户表T_USER, ...

  7. linux 安装nvm,通过nvm安装node

    1,nvm git地址点击打开链接,安装命令 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh ...

  8. CSS3制作图形大全——碉堡了

    为方便观看效果图,请移步原文:https://www.jqhtml.com/8045.html Square   #square {     width: 100px;     height: 100 ...

  9. hdu 3068 最长回文(manacher&amp;最长回文子串)

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  10. iOS开发之资料收集

    github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github ...