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 ...
随机推荐
- js的函数作用域
1.js作用域 //在函数内部声明的变量,如果不加var,则自动变成window的成员//预处理:扫描代码,看到var或者函数就生效./*function f(){a = 8;//var a = 8; ...
- JSP 指令
JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言. 语法格式如下: <%@ directive attribute="value" %&g ...
- 040——VUE中组件之组件间的数据参props的使用实例操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- LNMP架构下Discuz论坛的搭建
在上一节中,我们对lnmp架构下的mysql.php.nginx进行源码的安装,并设置了相关的安装参数.现在我们将在上一节的基础上,把三者联系起来进行一个论坛的部署. 一.首先进行Discuz(社区论 ...
- IE、Chrome、Firefox 三大浏览器对比
1. 代理 IE 浏览器设置代理位置在: [Internet 选项]⇒ [连接]选项卡 ⇒ [局域网设置],如下: Chrome 的代理配置界面完全同 IE,只是你设置路径在: [设置]⇒ [高级]⇒ ...
- PyalgoTrade 打印收盘价(二)
让我们从一个简单的策略开始,就是在打印收盘价格的过程中: from pyalgotrade import strategy from pyalgotrade.barfeed import yahoof ...
- c++ istringstream的用法
一.测试代码 istringstream 是将字符串变成字符串迭代器一样,将字符串流在依次拿出,比较好的是,它不会将空格作为流.这样就实现了字符串的空格切割. #include<iostream ...
- create newline in Github Bio
/********************************************************************************* * create newline ...
- Python selenium chrome 环境配置
Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...
- [QT][SQLITE]学习记录二 日期查询
资料例程: 1.dongfangyu SQL时间段查询 : http://blog.csdn.net/dongfangyu/article/details/4607236 2.痕网 - henw S ...









