spark基于win上面的操作

  自己前面的小练习一直都是在linux上面写的,可是最近由于要把他迁移到win上面,我在自己的csdn博客有对如何在win上面搭建spark环境做出说明,好了,我们还是先看看

  今天的内容吧

    1.假如你有一个文件,如果你想实现以前的mapReduce的操作,这个时候,如果我们使用spark则会变的非常的简单,如果你此时的文件是以"\t"进行分割的,那我就可以这

def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("UrlCount").setMaster("local")
    val sc = new SparkContext(conf)

    //rdd1将数据进行切分,元祖中放的是(URL,1)
     val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{
      val f = line.split("\t")
      (f(1),1)
    })
      val rdd2 = rdd1.reduceByKey(_+_)
  }
则此时的rdd2,就已经完成了wordCount的操作了

  第一个练习(对一个数组进行循环处理)

package cn.wj.test.spark.day03

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by WJ on 2016/12/30.
  */
object ForeachDemo2 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("ForeachDemo2").setMaster("local[3]")
    val sc = new SparkContext(conf)
    val rdd1 = sc.parallelize(List(1,2,3,4,5,6,7,8,9))
    rdd1.foreach(println(_))
    sc.stop()
  }
}

  

  2.第二个练习

  

package cn.wj.spark.day02

import java.net.URL

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by WJ on 2016/12/30.
  */
// 这个是以java来进行排序,如果内存过大,可能会出现溢出的操作
object UrlCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("UrlCount").setMaster("local")
    val sc = new SparkContext(conf)

    //rdd1将数据进行切分,元祖中放的是(URL,1)
     val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{
      val f = line.split("\t")
      (f(1),1)
    })
    val rdd2 = rdd1.reduceByKey(_+_)
    val rdd3 = rdd2.map(t=>{
      val url = t._1
      val host = new URL(url).getHost()
      (host,url,t._2)
    })
//    println(rdd2.collect.toBuffer)
    //这个的操作是,将rdd4的3以host的进行分组,软后并在每一个分组的情况下,以value中的第三个数据进行排序
    //,并且只取前三个的排序
    val rdd4 = rdd3.groupBy(_._1).mapValues(it =>{
      it.toList.sortBy(_._3).reverse.take(3)
    })
    println(rdd4.collect().toBuffer)
  }
}

  

  第三个练习

  

package cn.wj.test.spark.day03

import org.apache.spark.{SparkConf, SparkContext}
import java.net.URL
/**
  * Created by WJ on 2016/12/31.
  */
object AddUrlCount3 {

  val arr = Array("java.itcast.cn","php.itcast.cn","net.itcast.cn")

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("AppUrlCount3").setMaster("local")
    val sc = new SparkContext(conf)

//    val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{
//       val f = line.split("\t")
//      (f(1),1)
//    })

     val rdd1 = sc.textFile("E://Test/itcast.log").map( line =>{
       val f = line.split("\t")
       (f(1),1)
     })
     val rdd2 = rdd1.reduceByKey(_+_)
    val rdd3 = rdd2.map(t=>{
      val url = t._1
      val host = new URL(url).getHost()
      (host,url,t._2)
    })

    for(ins <- arr){
      val rdd = rdd3.filter(_._1==ins)
      val result = rdd.sortBy(_._3,false).take(3)
      println(result.toBuffer)
    }
    sc.stop()

  }
}

  

时间: 2024-08-24 21:48:05

spark基于win上面的操作的相关文章

将java开发的wordcount程序提交到spark集群上运行

今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /spark.txt,即可. 第一:看整个代码视图 打开WordCountCluster.java源文件,修改此处代码: 第二步: 打好jar包,步骤是右击项目文件----RunAs--Run Configurations 照图填写,然后开始拷贝工程下的jar包,如图,注意是拷贝那个依赖jar包,不是第

Git同步更新操作GitHub和码云仓库上面的代码

一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更新,于是有没有方法可以让我们可以同步更新这两个git远程仓库呢?? 答案: 办法肯定是有的,下面我们就来实际进行操作一下吧 ~ 二.同步更新操作GitHub和码云仓库代码 即提交代码时,github仓库和码云仓库上的代码都同步更新提交上去了,而不需要分开去进行两次提交 ~ (1)将github和码云

基于python的selenium两种文件上传操作

方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情况: 1.AutoIt  去调用它生成的au3或者exe格式的文件 2.SendKeys第三方库(目前只支持到2.7版本) 网址:https://pypi.python.org/pypi/SendKeys 3.Python的pywin32库,通过识别对话框句柄来

.Spark Streaming(上)--实时流计算Spark Streaming原理介

Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/4747735.html 1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP

7.Spark Streaming(上)--Spark Streaming原理介绍

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP sockets,从数据源获取数据之后,可以使用诸如map.reduce.join和window等高级函数进行复杂算法的处

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

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送–Spark入门实战系列>获取 1 Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP sockets,从数据源获取数据之后,可以使用诸如map.reduce.join和window等高级函数进行复杂算法的处理

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”. l“机器学习是对能通过经验自动改进的计算机算法的研究”. l“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准.” 一种经常引用的英文定义是:A computer program is said

QSettings配置读写-win注册表操作-ini文件读写

版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http://techieliang.com/2017/12/674/ 文章目录 1. 介绍 2. 创建配置文件  2.1. 配置格式  2.2. 作用域  2.3. 关于组织.程序名 3. 配置文件读写 4. 范例  4.1. win下SystemScope.IniFormat  4.2. win下UserSc

基于Win服务的标签打印(模板套打)

最近做了几个项目,都有在产品贴标的需求 基本就是有个证卡类打印机,然后把产品的信息打印在标签上. 然后通过机器人把标签贴到产品上面 标签信息包括文本,二维码,条形码之类的,要根据对应的数据生成二维码,条形码. 打印标签的需求接到手后,开始了我的填坑之旅. 打印3.0源代码:https://github.com/zeqp/ZEQP.Print 打印1.0 第一个项目开始,因为原来没有研究过打印,所以在Bing上查了一下.Net打印机关的资料 发现基本上都是基于.net的System.Drawing