spark version 1.6.2

scala verson 2.10.6

此代码参考官方例子----

自定义接收器

  1. import java.io.BufferedReader
  2.  
  3. import org.apache.spark.Logging
  4. import org.apache.spark.storage.StorageLevel
  5. import org.apache.spark.streaming.receiver.Receiver
  6.  
  7. import scala.io.{BufferedSource, Source}
  8.  
  9. /**
  10. * 自定义接收器
  11. * @param URL url
  12. */
  13. class UrlReceiver(URL:String) extends Receiver[String](StorageLevel.MEMORY_AND_DISK) with Logging{
  14. override def onStart(): Unit = {
  15. new Thread("创建一个线程"){
  16. override def run(){
  17. url()
  18. }
  19. }.start()
  20.  
  21. }
  22.  
  23. override def onStop(): Unit = {
  24.  
  25. }
  26.  
  27. private def url(): Unit ={
  28. var input:String=null
  29. try{
  30. val fileContent: BufferedSource = Source.fromURL(URL, "utf-8")
  31. val reader: BufferedReader = fileContent.bufferedReader()
  32. input=reader.readLine()
  33. while (!isStopped && input!=null){
  34.  
  35. //推送数据给streaming
  36. store(input)
  37. input=reader.readLine()
  38. }
  39.  
  40. reader.close()
  41. logInfo("停止接受")
  42. restart("尝试再次连接~~~~~~~~~~~~~")
  43. }catch {
  44. case t:Throwable =>{
  45. restart(s"接受数据错误${t}")
  46. }
  47. case s=>{
  48. restart(s"连接出现错误${URL}:${s}")
  49. }
  50. }
  51. }
  52. }

写streming程序

  1. import org.apache.spark.streaming.dstream.ReceiverInputDStream
  2. import org.apache.spark.streaming.{Seconds, StreamingContext}
  3. import org.apache.spark.{SparkConf, SparkContext}
  4.  
  5. object urlstreaming {
  6.  
  7. def main(args: Array[String]): Unit = {
  8. new SparkConf
  9. SparkContext
  10. //此处以百度为例
  11. val URL= "https://www.baidu.com"
  12. val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName(s"${this.getClass.getSimpleName}").set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
  13. .set("spark.streaming.stopGracefullyOnShutdown", "true")
  14.  
  15. val ssc = new StreamingContext(conf,Seconds(3))
  16.  
  17. val value: ReceiverInputDStream[String] = ssc.receiverStream(new UrlReceiver(URL))
  18.  
  19. value.foreachRDD(
  20. rdd=>{
  21.  
  22. rdd.foreach(println)
  23. }
  24. )
  25.  
  26. ssc.start()
  27. ssc.awaitTermination()
  28.  
  29. }
  30. }

通过sparkstreaming分析url的数据的更多相关文章

  1. HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

    什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...

  2. MapReduce分析明星微博数据

    互联网时代的到来,使得名人的形象变得更加鲜活,也拉近了明星和粉丝之间的距离.歌星.影星.体育明星.作家等名人通过互联网能够轻易实现和粉丝的互动,赚钱也变得前所未有的简单.同时,互联网的飞速发展本身也造 ...

  3. C#分析URL参数获取参数和值得对应列表

    原文: C#分析URL参数获取参数和值得对应列表 /// <summary> /// 分析url链接,返回参数集合 /// </summary> /// <param n ...

  4. Hadoop权威指南:从Hadoop URL读取数据

    [TOC] Hadoop权威指南:从Hadoop URL读取数据 使用java.net.URL对象从Hadoop文件系统读取文件 实现类似linux中cat命令的程序 文件名 HDFSCat.java ...

  5. region URL请求数据

    #region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...

  6. C#分析URL参数获取参数和值得对应列表(一)

    C#操作Url参数 http://www.cnblogs.com/RobotH/archive/2008/11/17/1335322.html 用 C# 分析 URL 中的参数信息 http://ww ...

  7. java跨服务器请求url获得数据

    在项目中,有时需要通过请求远程服务器上的url获取数据(前提是程序所在服务器可以和url服务器ping成功), 用java在后台发送请求时,用到了java.net.URL, java.net.URLC ...

  8. SEO需要分析哪些网站数据

    http://www.wocaoseo.com/thread-227-1-1.html 一.网站的基本数据 1.网站流量详情(ip.pv.需要看pv与ip的比) 2.网站的跳出率(可以看出一个网站的用 ...

  9. 大数据离线分析平台 JavaSDK数据收集引擎编写

    JavaSDK设计规则 JavaSDK提供两个事件触发方法,分别为onChargeSuccess和onChargeRefund.我们在java sdk中通过一个单独的线程来发送线程数据,这样可以减少对 ...

随机推荐

  1. C# Excel导入Access

    /// <summary> /// 导入 /// </summary> private void btn_In_Click(object sender, EventArgs e ...

  2. Morris 轻量级 图表

    Morris.js 是基于 jQuery 和 Raphaël 的轻量级矢量图形库,帮助开发人员轻松绘制各种形式的图表.示例: HTML: <div id="myfirstchart&q ...

  3. 深入理解 Win32 PE 文件格式 Matt Pietrek(慢慢体会)

    这篇文章假定你熟悉C++和Win32. 概述 理解可移植可执行文件格式(PE)可以更好地了解操作系统.如果你知道DLL和EXE中都有些什么东西,那么你就是一个知识渊博的程序员.这一系列文章的第一部分, ...

  4. 一个类的实例化对象所占空间的大小(对象大小= vptr(可能不止一个) + 所有非静态数据成员大小 + Aligin字节大小(依赖于不同的编译器))

    注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小. 如果 Class ...

  5. Delphi xe5 StyleBook的用法(待续)

    首先要在FORM里拖进来一个StyleBook1,然后在Form里设置属性,记住一定要在单击form,在OBject Inspector里设置StyleBook  [StyleBook1]. 下一个属 ...

  6. delphi 读写文本文件(函数比较全)

    需要两个按钮和两个Richedit控件,采用默认名称即可. procedure TForm1.Button1Click(Sender: TObject);  //写文件 var wText: Text ...

  7. libjingler-0.6.2在windows和ubuntu 10.04下的编译(Google Talk)

    Libjingle版本:0.6.2 所需的资源:         gtest-1.6.0.zip         http://download.csdn.net/detail/cl_gamer/48 ...

  8. IIS6利用URLScan修复IIS短文件名漏洞

    一.下载URLScan 3.1 链接: http://pan.baidu.com/s/1i4HfKrj 密码: dmud 二.安装URLScan 3.1 安装完成以后,我们可以在System32/In ...

  9. 【数据结构】30、hashmap=》hash 计算方式

    前提知识 写在前面,为什么num&(length - 1) 在length是2的n次幂的时候等价于num%length n - 1意味着比n最高位小的位都为1,而高的位都为0,因此通过与可以剔 ...

  10. 30212Java_数组

    数组 1.综述 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 数组的三个 ...