• 并行化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各种操作及详细说明的更多相关文章

  1. 小白学习Spark系列二:spark应用打包傻瓜式教程(IntelliJ+maven 和 pycharm+jar)

    在做spark项目时,我们常常面临如何在本地将其打包,上传至装有spark服务器上运行的问题.下面是我在项目中尝试的两种方案,也踩了不少坑,两者相比,方案一比较简单,本博客提供的jar包适用于spar ...

  2. Spark系列—02 Spark程序牛刀小试

    一.执行第一个Spark程序 1.执行程序 我们执行一下Spark自带的一个例子,利用蒙特·卡罗算法求PI: 启动Spark集群后,可以在集群的任何一台机器上执行一下命令: /home/spark/s ...

  3. Spark系列—01 Spark集群的安装

    一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的Ma ...

  4. Selenium系列(二) - 控制浏览器操作的详细解读

    如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...

  5. spark系列-2、Spark 核心数据结构:弹性分布式数据集 RDD

    一.RDD(弹性分布式数据集) RDD 是 Spark 最核心的数据结构,RDD(Resilient Distributed Dataset)全称为弹性分布式数据集,是 Spark 对数据的核心抽象, ...

  6. ANDROID Porting系列二、配置一个新产品

    ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1.         目录//vendor/创建一个公 ...

  7. spark教程(二)-shell操作

    spark 支持 shell 操作 shell 主要用于调试,所以简单介绍用法即可 支持多种语言的 shell 包括 scala shell.python shell.R shell.SQL shel ...

  8. Spark 系列(二)—— Spark开发环境搭建

    一.安装Spark 1.1 下载并解压 官方下载地址:http://spark.apache.org/downloads.html ,选择 Spark 版本和对应的 Hadoop 版本后再下载: 解压 ...

  9. Spark系列之二——一个高效的分布式计算系统

    1.什么是Spark? Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有H ...

随机推荐

  1. Flask 4 拓展

    NOTE 1.Flask被设计为可拓展模式,所以没有提供如数据库和用户认证等重要的功能,允许开发者按需开发. 2.使用Flask-Script支持命令行选项: 安装flask-script: pip ...

  2. Mininet 跑一个简单的ping测试

    安装地址:https://github.com/mininet/mininet/wiki/Mininet-VM-Images 登录用户:mininet 密码:mininet 执行命令:sudo mn ...

  3. UVa 11825 黑客的攻击(状态压缩dp)

    https://vjudge.net/problem/UVA-11825 题意: 假设你是一个黑客,侵入了一个有着n台计算机(编号为0,1,...,n-1)的网络.一共有n种服务,每台计算机都运行着所 ...

  4. Maximum Depth of Binary Tree,求树的最大深度

    算法分析:求树的最小最大深度时候,都有两种方法,第一种是递归思想.树最大最小深度,即为它的子树的最大最小深度+1,是动态规划的思想.还有一种方法是层序遍历树,只不过求最小深度时,找到第一个叶子节点就可 ...

  5. 使用 shinydashboard

    除了 shiny 扩展包提供的函数之外,RStudio 也开发了一个 shinydashboard 扩展包 (http://rstudio.github.io/shinydashboard/),它呈现 ...

  6. Model/ModelMap 和 ModelAndView 的区别使用

    Model/ModelMap 和 ModelAndView 的区别使用 Model/ModelMap controller: package springmvc.controller; import ...

  7. android--------Universal-Image-Loader图片加载框架和结合LruCache缓存图片

    本博客包含包含Android-Universal-Image-Loader 网络图片加载框架实现图片加载和结合universal-image-loader与LruCache来自定义缓存图片,可以设置缓 ...

  8. centOS安装ab测试工具

    yum install apr-util cd /opt mkdir abtmp cd abtmp yum install yum-utils.noarch yumdownloader httpd-t ...

  9. bzoj-4870-组合dp+矩阵幂

    4870: [Shoi2017]组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 829  Solved: 446[Submit][Statu ...

  10. 创建对象并生成结果的3个步骤-Chapter 3 P38

    必须完成3个步骤才能创建对象并生成结果: 1 创建对象   namespace LanguageFeatures { public class Product { public int Product ...