spark的streamingcontext的另一种创建方式

val ssc = StreamingContext.getOrCreate(checkpointDirectory,
  () => {
    val topics = "logTopic"
    val brokers = "master:9092,slave1:9092"

    val sparkConf = new SparkConf().setAppName("uv").setMaster("local[2]")
    val ssc = new StreamingContext(sparkConf, Seconds(2))
    ssc.checkpoint(checkpointDirectory)

    //create direct kafka stream with brokers and topics
    /*
    直接消费是不经过zookeeper的,所以这时候你就要告诉我kafka的地址,而不是zookeeper的地址里
     */
    val topicSet = topics.split(",").toSet
    val kafkaParams = Map[String, String]("metadata.broker.list" -> brokers)

    //stringdecoder表示传的消息是字符串类型的
    val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
      ssc, kafkaParams, topicSet
    )

    computeUV(messages)

    ssc
  })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是一个使用 PySpark 和 Flume 的实时数据流处理程序,可以统计从 Flume 传输过来的事件数量并输出。下面对每一行代码进行详细解释: ``` from future import print_function ``` 这是 Python2 中使用 Python3 的 print 函数的语法,用于兼容 Python2 和 Python3。 ``` import sys from pyspark import SparkContext from pyspark.streaming import StreamingContext from pyspark.streaming.flume import FlumeUtils import pyspark ``` 导入所需的模块和包。 ``` if name == "main": ``` 判断程序是否在主函数中运行。 ``` if len(sys.argv) != 3: print("Usage: flume_wordcount.py <hostname> <port>", file=sys.stderr) exit(-1) ``` 判断命令行参数是否正确,如果不正确则输出提示信息并退出程序。 ``` sc = SparkContext(appName="FlumeEventCount") ``` 创建 SparkContext 对象,指定应用程序名称为 "FlumeEventCount"。 ``` ssc = StreamingContext(sc, 2) ``` 创建 StreamingContext 对象,指定 SparkContext 对象和批处理间隔为 2 秒。 ``` hostname= sys.argv[1] port = int(sys.argv[2]) ``` 从命令行参数中获取 Flume 的主机名和端口号。 ``` stream = FlumeUtils.createStream(ssc, hostname, port,pyspark.StorageLevel.MEMORY_AND_DISK_SER_2) ``` 使用 FlumeUtils.createStream() 方法创建一个输入数据流。 ``` stream.count().map(lambda cnt : "Recieve " + str(cnt) +" Flume events!!!!").pprint() ``` 对流进行操作,统计接收到的事件数量,并使用 pprint() 方法输出。 ``` ssc.start() ssc.awaitTermination() ``` 启动 StreamingContext 并等待程序结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值