自己前面的小练习一直都是在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() }
}

  

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

  1. SparkR(R on Spark)编程指南 含 dataframe操作 2.0

    SparkR(R on Spark)编程指南 Spark  2015-06-09 28155  1评论 下载为PDF    为什么不允许复制 关注iteblog_hadoop公众号,并在这里评论区留言 ...

  2. SparkR(R on Spark)编程指南 含 dataframe操作

    SparkR(R on Spark)编程指南 Spark  2015-06-09 28155  1评论 下载为PDF    为什么不允许复制 关注iteblog_hadoop公众号,并在这里评论区留言 ...

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

    今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ...

  4. 如何简单的将手机投屏在windows上(可在电脑上直接操作手机)

    首先附上要使用的scrcpy源地址 接下来是如何使用(我用的是安卓手机+win10): 下载好后,首先使用数据线连接手机到电脑,并且手机需要打开开发人员选项(不知道如何打开的自行百度): 打开到安装s ...

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

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

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

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...

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

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

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

    Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/474 ...

  9. 【Spark 内核】 Spark 内核解析-上

    Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更 ...

随机推荐

  1. Linux 两组信号对比

    博客逐步迁移到,独立博客,原文地址 http://www.woniubi.cn/two_groups_signal_difference/ 之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时 ...

  2. SpringCloud的学习记录(2)

    这一章节主要讲如何搭建eureka-client项目. 在我们生成的Demo项目上右键点击New->Module->spring Initializr, 然后next, 填写Group和A ...

  3. 2.eclipse安装

    1.进入官网https://www.eclipse.org/ 2.配置工作目录:存放 1.项目代码    2.IDE相关配置信息 3.没有配置tomcat,所以为空.

  4. 腾讯云“动态加速”与“CDN”的区别——浅谈对“动态加速”的理解(可能有误)

    CDN的劣势及“动态加速”产生背景 通常CDN对静态内容支持较好,若使用其加速动态内容,可能会导致异常(如导致无法登录).当然,可以将动态内容的在CDN节点上的缓存时间设置为0秒来解决.但这毕竟是用户 ...

  5. linux命令之awk命令

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linu ...

  6. P1089 津津的储蓄计划

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...

  7. ckplayer插件播放视频

    官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录 ...

  8. react(一):组件的生命周期

    最近兄弟团队让我去帮忙优化两个页面,前端用的react全家桶,后端用的python,上一次写react代码都过去一年了,顺着以前的的学习思路,再捋顺一下react的要点 组件的生命周期就是Reac的工 ...

  9. 前端面试整理(HTML&CSS)

    1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度.行高及外边距和内边距都不可改变,文字图片的宽度不可改变,只能容纳文本或者其他行内元素:其中im ...

  10. 通过增量备份恢复来处理Oracle DG 复制GAP

    1.确定增备scn范围,通过alert日志获取gap日志序列GAP - thread 1 sequence 109631-117170 2.根据序列获取增备起点SCN提示最小gap序列为109631, ...