Spark系列(二) Spark Shell各种操作及详细说明
并行化scala集合(Parallelize)
//加载数据1~10
val num=sc.parallelize(1 to 10)
//每个数据项乘以2,注意 _*2记为一个函数(fun)
val doublenum = num.map(_*2)
//内存缓存数据
doublenum.cache()
//过滤数据,每个数据项 % 3 为0的数据为结果集;
val threenum = doublenum.filter(_ % 3 == 0)
//释放缓存
threenum.unpersist()
//出发action操作根据前面的步骤构建DAG并执行,以数据的形式返回结果集;
threenum.collect
//返回结果集中的第一个元素
threenum.first
//返回结果集中的前三个元素
threenum.take(3)
//对数据集中的元素个数统计
threenum.count
//查看以上步骤经过的RDD转换过程
threenum.toDebugString
结果:
K-V类型数据演示
// 加载数据
val kv1=sc.parallelize(List(("A",1),("B",2),("C",3),("A",4),("B",5)))
//根据数据集中的每个元素的K值对数据排序
kv1.sortByKey().collect
kv1.groupByKey().collect //根据数据集中的每个元素的K值对数据分组
kv1.reduceByKey(_+_).collect
注意:sortByKey 、groupByKey 、reduceByKey之间的结果集的区别;
val kv2=sc.parallelize(List(("A",4),("A",4),("C",3),("A",4),("B",5)))
kv2.distinct.collect // distinct操作去重
kv1.union(kv2).collect //kv1与kv2联合
kv1.join(kv2).collect //kv1与kv2两个数据连接,相当于表的关联
val kv3=sc.parallelize(List(List(1,2),List(3,4)))
kv3.flatMap(x=>x.map(_+1)).collect //注意这里返回的数据集已经不是K-V类型了
HDFS文件操作演示
先将clk.tsv和reg.tsv文件上传到hdfs,文件格式如下;
// 定义一个对日期格式化的常量
val format = new java.text.SimpleDateFormat("yyyy-MM-dd")
// scala语法,定义Register类(根据reg.tsv数据格式)
case class Register (d: java.util.Date, uuid: String, cust_id: String, lat: Float,lng: Float)
// scala语法,定义Click类(根据clk.tsv数据格式)
case class Click (d: java.util.Date, uuid: String, landing_page: Int)
// 加载hdfs上的文件reg.tsv并将每行数据转换为Register对象;
val reg = sc.textFile("hdfs://chenx:9000/week2/join/reg.tsv").map(_.split("\t")).map(r => (r(1), Register(format.parse(r(0)), r(1), r(2), r(3).toFloat, r(4).toFloat)))
// 加载hdfs上的文件clk.tsv并将每行数据转换为Click对象;
val clk = sc.textFile("hdfs://chenx:9000/week2/join/clk.tsv").map(_.split("\t")).map(c => (c(1), Click(format.parse(c(0)), c(1), c(2).trim.toInt)))
reg.join(clk).collect
Spark系列(二) Spark Shell各种操作及详细说明的更多相关文章
- 小白学习Spark系列二:spark应用打包傻瓜式教程(IntelliJ+maven 和 pycharm+jar)
在做spark项目时,我们常常面临如何在本地将其打包,上传至装有spark服务器上运行的问题.下面是我在项目中尝试的两种方案,也踩了不少坑,两者相比,方案一比较简单,本博客提供的jar包适用于spar ...
- Spark系列—02 Spark程序牛刀小试
一.执行第一个Spark程序 1.执行程序 我们执行一下Spark自带的一个例子,利用蒙特·卡罗算法求PI: 启动Spark集群后,可以在集群的任何一台机器上执行一下命令: /home/spark/s ...
- Spark系列—01 Spark集群的安装
一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的Ma ...
- Selenium系列(二) - 控制浏览器操作的详细解读
如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...
- spark系列-2、Spark 核心数据结构:弹性分布式数据集 RDD
一.RDD(弹性分布式数据集) RDD 是 Spark 最核心的数据结构,RDD(Resilient Distributed Dataset)全称为弹性分布式数据集,是 Spark 对数据的核心抽象, ...
- ANDROID Porting系列二、配置一个新产品
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
- spark教程(二)-shell操作
spark 支持 shell 操作 shell 主要用于调试,所以简单介绍用法即可 支持多种语言的 shell 包括 scala shell.python shell.R shell.SQL shel ...
- Spark 系列(二)—— Spark开发环境搭建
一.安装Spark 1.1 下载并解压 官方下载地址:http://spark.apache.org/downloads.html ,选择 Spark 版本和对应的 Hadoop 版本后再下载: 解压 ...
- Spark系列之二——一个高效的分布式计算系统
1.什么是Spark? Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有H ...
随机推荐
- 【日志】修改redis日志路径
redis默认不记录log文件,需要在Redis.conf文件,找到loglevel notice,在其后的logfile "",双引号中,写redis的路径"/redi ...
- Solidity 官方文档中文版 3_安装Solidity
基于浏览器的Solidity 如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问 基于浏览器的Solidity http://remix.ethereum.org/. 如 ...
- Jmeter界面总是有warning提示
要用Jmeter测试服务器性能,发现GUI界面总是有warning提示: WARNING: Could not open/create prefs root node Software\JavaSof ...
- 遗传算法 Genetic Algorithm
2017-12-17 19:12:10 一.Evolutionary Algorithm 进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算 ...
- HDU1754 I hate it_线段树(入门级别)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 用django发送异步邮件
太阳底下没有新鲜事,github是一个神奇的地方,你有什么想法,需求,点子.其实别人早就想到,而且也已经做到. 所以不要高估自己,有什么想法还是GITHUB一下,免得成了井底之娃. 这几天一直在研究p ...
- [批处理]批量提取MKV资源
最初是下了部没字幕的动漫,是720P MKV格式的,当时没注意,下完了以后才发现是没字幕的 后来去射手上找没有,百度了半天也没有 最后只能求救与已经下了这部动漫是MKV格式且是内挂字幕的人来帮忙 最后 ...
- U盘安装linix
首先制作u盘启动器. 然后在电脑上使用UltraISO将你的安装的linix系统刻录到u盘上 在放入一份linix系统在u盘更目录 boot页面u盘启动.选择 第二次没有放入系统在u盘根目录出现这个: ...
- protel 99se 全部焊盘和过孔补泪滴,很多都是失败的,对板子有影响吗?补泪滴的作用?
泪滴 是焊盘与导线或者是导线与导孔之间的滴装连接过度,设置泪滴的目的是在电路板受到巨大外力的冲撞时,避免导线与焊盘或者导线与导孔的接触点断开,另外,设置泪滴也可使PCB电路板显得更加美观.te ...
- Ethereum部署私有合约常见问题汇总
常见问题 问题1 问题描述: callback contain no result Error: authentication needed: password or unlock 这里的问题是当前所 ...









