spark编程基础--5.2键值对RDD
键值对RDD的创建
常用的键值对转换操作
reduceByKey(func)
groupByKey()
keys
values
sortByKey()
mapValues(func)
join
combineByKey
reduceByKey(func)
reduceByKey(func)的功能是,使用func函数合并具有相同键的值
groupByKey()
上面得到的wordCountsWithReduce和wordCountsWithGroup是完全一样的,但是,它们的内部运算过程是不同的
keys只会把Pair RDD中的key返回形成一个新的RDD
values只会把Pair RDD中的value返回形成一个新的RDD。
sortByKey()的功能是返回一个根据键排序的RDD
sortBy() ,false表示按降序排序。_._2表示每个键值对RDD元素的value
mapValues(func)
对键值对RDD中的每个value都应用一个函数,但是,key不会发生变化
join
join就表示内连接。对于内连接,对于给定的两个输入数据集(K,V1)和(K,V2),只有在两个数据集中都存在的key才会被输出,最终得到一个(K,(V1,V2))类型的数据集。
combineByKey
例:编程实现自定义Spark合并方案。给定一些销售数据,数据采用键值对的形式<公司,收入>,求出每个公司的总收入和平均收入,保存在本地文件
提示:可直接用sc.parallelize在内存中生成数据,在求每个公司总收入时,先分三个分区进行求和,然后再把三个分区进行合并。只需要编写RDD combineByKey函数的前三个参数的实现
//Combine.scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object Combine {def main(args: Array[String]) {val conf = new SparkConf().setAppName("Combine").setMaster("local")val sc = new SparkContext(conf)val data = sc.parallelize(Array(("company-1",88),("company-1",96),("company-1",85),("company-2",94),("company-2",86),("company-2",74),("company-3",86),("company-3",88),("company-3",92)),3)val res = data.combineByKey((income) => (income,1),( acc:(Int,Int), income ) => ( acc._1+income, acc._2+1 ),( acc1:(Int,Int), acc2:(Int,Int) ) => ( acc1._1+acc2._1, acc1._2+acc2._2 )).map({ case (key, value) => (key, value._1, value._1/value._2.toFloat) })res.repartition(1).saveAsTextFile("file:///usr/local/spark/mycode/rdd/result")}
}
一个综合实例
题目:给定一组键值对("spark",2),("hadoop",6),("hadoop",4),("spark",6),键值对的key表示图书名称,value表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。
相关文章:

禁止选中文本事件
由于经常会些写错,为了以后节约时间,记录下: obj.on(click,.arrow,function(ev){console.log(click);ev.stopPropagation();ev.preventDefault();var rel $(this).attr(rel);if( rel && rel < totalPage && rel>0 ){g…
一套外企的数据库设计面试题
最近发现园子里面关于数据库方面的文章比较多,正好我也是一个喜欢凑热闹的家伙,那就跟着烧一把火吧。^_^ 这是前阵子一个朋友面试外企的一套关于数据库设计的试题,有兴趣的朋友不妨一试。 Part I 工厂在定义一个新产品的流程如下&#x…

持续集成(一)为什么我们迫切需要持续集成
摘录自:http://blog.csdn.net/kkkloveyou/article/details/53875987 为什么我们迫切需要持续集成(Continuous Integration) 持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软…

spark编程基础--5.3数据读写
文件数据读写 1.本地文件系统的数据读写 1)从文件中读取数据创建RDD 2)把RDD写入到文本文件中 2.分布式文件系统HDFS的数据读写 3. JSON文件的读取 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript规范的…

试用最新版本的live writer发一篇日志看看
之前装Vs2008想弄WPF的时候,根据网上的说明,找VS2008的SP1,windows SDK的时候颇费周折,虽然说微软上面可以直接下,但是我找了半天才找到,总是觉得麻烦。现在就把一些WPF的相关前期准备软件的地址发出来&…

守护网络安全,我们一直在努力
据外电消息,日前,一种通过发布有关北京奥运会虚假信息的邮件来传播新型网络病毒,正在席卷全球。报道中写道,一封号称内容有关“北京奥运会可能因四川大地震取消和延迟”的电子邮件成为了“新型蠕虫恶意***程序”的源头,…

DELPHI 中 Window 消息大全使用详解
Window 消息大全使用详解导读: Delphi是Borland公司的一种面向对象的可视化软件开发工具。 Delphi集中了Visual C和Visual Basic两者的优点:容易上手、功能强大,特别是在界面设计、数据库编程、网络编程方面更有其独特的优势。 Delphi中的消息…

vue 在浏览器控制台怎么调试 谷歌插件vue Devtools
vue 在浏览器控制台怎么调试 谷歌插件vue Devtools 问题: vuejs里面的变量,怎么用浏览器的console查看? 例如,想在chrome里用console.log查看变量$data,会显示undefined。 解决方案: 再main.js里面声明window.Vue new…

spark编程基础--5.4综合实例
操作指令如下: cd /usr/local/hadoop./sbin/start-dfs.sh./bin/hdfs dfs -mkdir -p spark/mycode/rdd/TopN./bin/hdfs dfs -put /usr/local/spark/mycode/TopN_file1.txt spark/mycode/rdd/TopN ./bin/hdfs dfs -put /usr/local/spark/mycode/TopN_file2.txt spark…

关于C#中的DLLImport (引)
MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。 并给了一个示例: [DllImport("KERNEL…

Bootstrap框架和inconfont、font-awesome使用
Bootstrap框架和inconfont、font-awesome使用 iconfont的使用:https://www.cnblogs.com/clschao/articles/10387580.html Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它…

spark编程基础--6.DataFrame
使用spark安装时自带的样例数据people.json文件,生成DataFrame: 下面从示例文件people.json中创建一个DataFrame,然后保存成csv格式文件,代码如下: scala> val peopleDF spark.read.format("json").loa…

firebug 的使用
[Firebug - Console控制台视图] console API文档, http://www.getfirebug.com/console.html console.info显示(i)图标 在输出时,需要注意第一个参数被自动识别为格式字符串 需要在页面加载前启动firebug,当页面加载后启动firebug时,就没有…

cisco PIX防火墙的配置及注解完全手册
PIX Version 6.3(1)interface ethernet0 auto 设定端口0 速率为自动interface ethernet1 100full 设定端口1 速率为100兆全双工interface ethernet2 auto 设定端口2 速率为自动nameif ethernet0 outside security0 设 定端口0 名称为 outside 安全级别为0nameif ethernet1 insi…

C/C++:*(p++)慎用!!!!!
各位代码界的大佬大家好,今天跟大家分享一个在C/C中常用,但是很危险的一串代码——*(p) 为什么说这一行代码比较危险呢,因为对于C/C来说,成也指针,败也指针。C/C中指针便于我们操作一块连续的内存空间中内容࿰…

Kindeditor学习中的那些坑
Kindeditor富文本编辑器还算比较好上手的一款插件吧,下面记录一下我在学习和实践中遇到的那些坑。 编辑器初始化方法和参数网上一搜一大把,不想搜的点这里,文档上各个参数已经写得很清楚了,直接拿过来用就OK 开始说一些实际用到时…

java2实用教程--第二章基本数据类型与数组
基本数据类型--浮点类型 public class Example2_1 {public static void main (String args[]) {char chinaWord 好,japenWord あ;char you \u4F60;int position 20320;System.out.println("汉字:"chinaWord"的位置:"(int)china…

EntityCURD操作的参数和返回值
以下是netbeans根据实体自动生成的CURD模板:/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.medea.order.session;import com.medea.order.entity.Storeorder;import java.util.List; import javax.ej…

[ZT]SQL Server 的事务日志意外增大或充满的处理方法
http://support.microsoft.com/kb/317375 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。一般情况下ÿ…

powershell真香
写毕设开题报告,从PDF复制后会有多余空格,一个一个手动删除略显麻烦。 delete.cpp#include<iostream> #include<cstdio> #include<string> #include<vector> using namespace std; int main() {//freopen("UAS.txt",&…

背包的硬币问题
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 HDU 1284 #include <iostream> using namespace std;const int M 32768 10;int dp[M];int main() {int n;while (~scanf("%d&q…

【转帖】OnPreRender Render的区别
转自:http://hi.baidu.com/trip008/blog/item/d6139ab77b5414f130add1e9.html protected override void OnPreRender(EventArgs e) protected override void Render(HtmlTextWriter writer) 这两个的区别。可否告知 asp.net页面在触发各个子控件的事件之后&#…

微信小程序如何进行登录授权和获取用户信息
微信小程序如何进行登录授权和获取用户信息

禁止windows系统的自动运行功能
禁用Windows 系统的自动播放功能的方法:在运行中输入 gpedit.msc 后回车,打开组策略编辑器,依次点击:计算机配置->管理模板->系统->关闭自动播放-…

WCF配置文件全攻略
Code<?xml version"1.0" encoding"utf-8" ?><configuration> <system.ServiceModel> <!-- services 元素包含应用中驻留的所有service的配置要求 --> <services> <!-- 每个服务的…

图的算法专题——最小生成树
概要: Prim算法Kruskal算法1、Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每…

GridControl摘录
gvCabTotalInfo.Columns["出线平均<br>电压"].SummaryItem.SummaryType DevExpress.Data.SummaryItemType.Average; gvCabTotalInfo.Columns["出线平均<br>电压"].SummaryItem.DisplayFormat "平均:{0:N2}"; gvCabTotalInfo.Refre…

小程序将form表单数据写入云数据库
小程序将form表单数据写入云数据库 <!--pages/MyIncome/MyIncome.wxml--> <view classforms><form bindsubmitgetForm><view classgetform><view>用戶名:<input typetext nameusername placeholder請輸入用戶名/></view><view&g…
ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就是今天要说的CompositeControl。系列文章链接:ASP.NET自…

[C++对象模型][6]sizeof与对象内存布局
有了前面几节的铺垫,本节开始摸索C的对象的内存布局,平台为windows32位VS2008。 一 内置类型的size 内置类型,直接上代码,帮助大家加深记忆: Codevoid TestBasicSizeOf() { cout << __FUNCTION__ << e…