Spark实例

1、入门

object HelloSpark {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
    val sc = new SparkContext(conf)
    sc.addJar("C:\\Users\\asus\\IdeaProjects\\HelloSpark\\target\\HelloSpark-1.0-SNAPSHOT.jar")

    val res = sc.textFile("D://info.log").map(line => {
      val f = line.split("\t")
      (f(1),1)
    }).reduceByKey(_+_).map(x => {
      val host = new URL(x._1).getHost
      (host,x._2)
    }).filter(_._1 == "java").sortBy(_._2,false).saveAsTextFile("D://out2")
    //println(res)D

    sc.stop()
  }
}

2、Parallelize

object H{
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
    val sc = new SparkContext(conf)
    val a = sc.parallelize(List((
      "A",90,27
    ),(
      "B",91,22
    ),(
      "C",90,25
    ))).sortBy(x => Girl(x._2,x._3),false).collect().toBuffer
    println(a)
  }
}

case class Girl(val a:Int,val b:Int) extends Ordered[Girl] with Serializable{
  override def compare(that: Girl): Int = {
    if(this.a == that.a){
      that.b - this.b
    } else {
      this.a - that.a
    }
  }
}

3、Spark Streaming(Socket)

object SocketSparkStreaming{
  val updateFunc = (iter: Iterator[(String, Seq[Int], Option[Int])]) => {
    //iter.flatMap(it=>Some(it._2.sum + it._3.getOrElse(0)).map(x=>(it._1,x)))
    //iter.map{case(x,y,z)=>Some(y.sum + z.getOrElse(0)).map(m=>(x, m))}
    iter.map(t => (t._1, t._2.sum + t._3.getOrElse(0)))
  }
  def main(args: Array[String]): Unit = {
    LoggerLevels.setStreamingLogLevels()
    val conf = new SparkConf().setAppName("Spark Streaming").setMaster("local[2]")
    val sc = new SparkContext(conf)
    sc.setCheckpointDir("d://ck")
    val ssc = new StreamingContext(sc,Seconds(5))
    val rdd = ssc.socketTextStream("192.168.1.101",8888)
    val res = rdd.flatMap(_.split(" ")).map((_,1)).updateStateByKey(updateFunc,new HashPartitioner(sc.defaultParallelism),true)
    res.print()
    ssc.start()
    ssc.awaitTermination()
  }
}

4、Spark Streaming(Flume)

object FlumeSparkStreaming{
  def main(args: Array[String]): Unit = {
    LoggerLevels.setStreamingLogLevels()
    val conf = new SparkConf().setAppName("Spark Streaming").setMaster("local[2]")
    val sc = new SparkContext(conf)
    sc.setCheckpointDir("d://ck")
    val ssc = new StreamingContext(sc,Seconds(5))
    val address = Seq(new InetSocketAddress("192.168.1.101",8888))
    val flumeStream = FlumeUtils.createPollingStream(ssc,address,StorageLevel.MEMORY_AND_DISK_SER)
    val words = flumeStream.flatMap(x => new String(x.event.getBody.array()).split(" ")).map((_,1))
    val result = words.reduceByKey(_+_)
    result.print()
    ssc.start()
    ssc.awaitTermination()
  }
}

5、Kafka WordCount

object KafkaWordCount{
  val updateFunc = (iter: Iterator[(String, Seq[Int], Option[Int])]) => {
    //iter.flatMap(it=>Some(it._2.sum + it._3.getOrElse(0)).map(x=>(it._1,x)))
    //iter.map{case(x,y,z)=>Some(y.sum + z.getOrElse(0)).map(m=>(x, m))}
    iter.map(t => (t._1, t._2.sum + t._3.getOrElse(0)))
  }
  def main(args: Array[String]): Unit = {
    LoggerLevels.setStreamingLogLevels()
    val Array(zkQuorum,group,topics,numThreads) = args
    val conf = new SparkConf().setAppName("Spark Streaming").setMaster("local[2]")
    val ssc = new StreamingContext(conf,Seconds(5))
    ssc.checkpoint("d://ckkafka")
    val topicMap = topics.split(",").map((_,numThreads.toInt)).toMap
    val result = KafkaUtils.createStream(ssc,zkQuorum,group,topicMap).map(_._2)
      .flatMap(_.split(" ")).map((_,1))
      .updateStateByKey(updateFunc,new HashPartitioner(
        ssc.sparkContext.defaultParallelism),rememberPartitioner = true)
    result.print()
    ssc.start()
    ssc.awaitTermination()
  }
}

6、窗口函数

object WindowFunc{
  def main(args: Array[String]): Unit = {
    LoggerLevels.setStreamingLogLevels()
    val conf = new SparkConf().setAppName("Spark Streaming").setMaster("local[2]")
    val ssc = new StreamingContext(conf,Seconds(5))
    ssc.checkpoint("d://ck")
    val lines = ssc.socketTextStream("192.168.1.101",8888)
    val result = lines.flatMap(_.split(" ")).map((_,1)).reduceByKeyAndWindow(
      (a:Int,b:Int) => (a+b),
      Seconds(15),
      Seconds(5)
    )
    result.print()
    ssc.start()
    ssc.awaitTermination()
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在Zeppelin中与Spark集成后,你可以使用Zeppelin来编写和运行Spark代码。下面是一个简单的Zeppelin Spark实例,演示了如何使用Spark进行数据处理: 1. 打开Zeppelin,并创建一个新的笔记。 2. 在笔记页面中,选择要使用的解释器为Spark。 3. 在第一个代码块中,我们将使用Spark读取一个文本文件,并计算单词的数量: ```scala %spark val textFile = sc.textFile("/path/to/textfile.txt") val wordCount = textFile.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) wordCount.collect().foreach(println) ``` 这段代码使用`sc.textFile()`方法读取一个文本文件,然后使用`flatMap()`和`map()`方法对每一行进行单词拆分和计数,最后使用`reduceByKey()`方法将相同单词的计数进行合并。最后,我们使用`collect()`方法将结果打印出来。 4. 在第二个代码块中,我们将使用Spark SQL查询一个数据表,并显示结果: ```scala %spark val df = spark.read.format("csv").option("header", "true").load("/path/to/data.csv") df.createOrReplaceTempView("data") val result = spark.sql("SELECT * FROM data WHERE age > 30") result.show() ``` 这段代码使用`spark.read.format().load()`方法读取一个CSV文件,并将其加载到DataFrame中。然后,我们使用`createOrReplaceTempView()`方法将DataFrame注册为一个临时表,以便使用Spark SQL进行查询。最后,我们使用`spark.sql()`方法执行查询,并使用`show()`方法显示结果。 这只是一个简单的Zeppelin Spark实例,你可以根据自己的需求进行更复杂的数据处理和分析。希望这个例子能帮助你开始使用ZeppelinSpark!如有任何问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值