Spark 阶段总结 3

 

1.    概述

本文描述的是 spark 学习的第三阶段知识点,主要目的是实现 spark streaming + flume + log4j 以 pull 模式进行实时统计,在<Spark 阶段总结 2 > (下文简称<2>)中,实现的是 push 模式。由于大部分工作都比较类似,因此本文主要是介绍差别。

 

2.    相同点

虚拟机环境、log4jTest都和 <2> 完全一样,在此不赘述。

 

3.    Flume 配置

3.1   配置文件pull.conf

agent.sources=s1

agent.channels=c1

agent.sinks=k1

agent.sources.s1.type=exec

agent.sources.s1.channels=c1

agent.sources.s1.command= tail -F /mnt/hgfs/share/spark_dir/data/log4j.log

agent.channels.c1.type=file

agent.channels.c1.capacity=10000

agent.channels.c1.transactionCapacity=10000

agent.sinks.k1.type=org.apache.spark.streaming.flume.sink.SparkSink

agent.sinks.k1.hostname=localhost

agent.sinks.k1.port=11114

agent.sinks.k1.channel=c1

         值得注意的修改点: k1.type、c1.capacity 和c1.transactionCapacity。

3.2   说明

为了使用 org.apache.spark.streaming.flume.sink.SparkSink,需要把相关jar 拷贝到$FLUME_HOME/lib 中,具体好像是scala-library-2.11.7.jar 和 spark-streaming-flume-sink_2.11-1.6.0.jar。

 

4.    FlumeTest

4.1   代码 FlumeTest.scala

package com.leon

import org.apache.spark.streaming.flume._
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.streaming.Seconds
import org.apache.spark.storage.StorageLevel

object FlumeTest {

  def main(args: Array[String]) {

    if (args.length < 2) {
      print("please enter host and port")
      System.exit(1)
    }

    val sc = new SparkConf().setAppName("FlumeEventCount")

    //创建StreamingContext,20秒一个批次
   
val ssc = new StreamingContext(sc, Seconds(20))

    val hostname = args(0)
    val port = args(1).toInt
    val storageLevel = StorageLevel.MEMORY_ONLY

   
println
(hostname + " " +port)
    val flumeStream = FlumeUtils.createPollingStream(ssc,hostname, port, storageLevel)

    flumeStream.count().map(cnt => "Received " + cnt + " flume events." ).print()
    flumeStream.count().saveAsTextFiles("./flume-spark-demo/")
    //flumeStream.print()
   //flumeStream.saveAsTextFiles("file://mnt/hgfs/share/spark_dir/flumeStream")

    //
开始运行
   
ssc.start()
    //计算完毕退出
   
ssc.awaitTermination()

  }

}

 
4.2区别
第28行的:val flumeStream = FlumeUtils.createPollingStream(ssc, hostname, port, storageLevel)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值