hadoop节点上进行spark的相关运算

11人阅读 评论(0) 收藏 举报
分类:

Spark RDDResilient DistributedDataset) 运算 

 在多节点hadoop的maseter中进行

登录spark    spark-shell --master local[*]

1建⽴立intRDD并转换为Array

val intRDD = sc.parallelize(List(3,1,2,5,5))

intRDD.collect()

 

2 建⽴stringRDD并转换为Array
val stringRDD =
sc.parallelize(List(“Apple","Orange","Banana","Grape","Ap
ple"))
stringRDD.collect() 

 

(1)具名函数备注 一行一行输入
def addone(x:Int):Int={
| return (x + 1)
| }
intRDD.map(addone).collect() 

 

 

(2) 匿名函数
intRDD.map(x => x + 1).collect()
(3)匿名函数+匿名参数
intRDD.map(_ + 1).collect() 

 

4 map字符串运算
stringRDD.map(x=>"fruit:" + x).collect() 

 

5 filter数字运算
intRDD.filter(x => x < 3).collect()
intRDD.filter(_ < 3).collect() 

 

6 filter字符串运算
stringRDD.filter(x => x.contains(“ra")).collect() 

 

7 distinct运算
intRDD.distinct().collect()
stringRDD.distinct().collect() 

 

8 randomSplit运算
val sRDD = intRDD.randomSplit(Array(0.4,0.6))
sRDD.size
sRDD(0).collect()
sRDD(1).collect()


9 groupBy运算
val gRDD = intRDD.groupBy(x => {if(x % 2 == 0) "even"
else “odd"}).collect()
gRDD(0)
gRDD(1) 

 

10 RDD转换运算
val intRDD1 = sc.parallelize(List(3,1,2,5,5))
val intRDD2 = sc.parallelize(List(5,6))
val intRDD3 = sc.parallelize(List(2,7))
(1)union并集运算
intRDD1.union(intRDD2).union(intRDD3).collect()
(intRDD1++ intRDD2++ intRDD3).collect()
(2)intersection交集运算
intRDD1.intersection(intRDD2).collect()
(3)subtract差集运算
intRDD1.subtract(intRDD2).collect()
(4)cartesian笛卡尔积运算


11 RDD基本动作运算
(1)读取运算
intRDD.first()
intRDD.take(2)
intRDD.takeOrdered(3)
intRDD.takeOrdered(3).(Ordering[Int].reverse)
(2)统计运算
intRDD.stats()
intRDD.min()
intRDD.max()
intRDD.stdev()
intRDD.count()
intRDD.sum()
intRDD.mean() 

 

 

 

 

 

 

12 RDD Key-Value 基本转换运算
val kvRDD1 = sc.parallelize(List((3,4),(3,6),(5,6),
(1,2)))

//查看键
kvRDD1.keys.collect()

//查看值
kvRDD1.values.collect()

//key小于5的
kvRDD1.filter{case(key,value) => key < 5}.collect()

//值小于5的
kvRDD1.filter{case(key,value) => value < 5}.collect()

//进行map运算
kvRDD1.mapValues(x => x*x).collect()

//进行排序按照关键字的大小 默认true
kvRDD1.sortByKey(true).collect()
kvRDD1.sortByKey().collect()
kvRDD1.sortByKey(false).collect()

//相同的key加起来
kvRDD1.reduceByKey((x,y)=>x+y).collect()

//reduce简写的运算方式
kvRDD1.reduceByKey(_+_).collect()
13 多个RDD Key-Value 转换运算
val kvRDD1 = sc.parallelize(List((3,4),(3,6),(5,6),
(1,2)))
val kvRDD2 = sc.parallelize(List((3,8)))

//链接并打印 相同key就匹配
kvRDD1.join(kvRDD2).foreach(println)

//左链接
kvRDD1.leftOuterJoin(kvRDD2).foreach(println)

//右链接
kvRDD1.rightOuterJoin(kvRDD2).foreach(println)

//键值对的差集运算
kvRDD1.subtract(kvRDD2).collect()
14 Key-Value 动作运算
kvRDD1.first()
kvRDD1.take(2)
val kvFirst = kvRDD1.first
kvFirst._1
kvFirst._2

//统计key的个数
kvRDD1.countByKey()

//map运算
val KV=kvRDD1.collectAsMap()
KV(3)
KV(1)

//所有关键字是3的值
kvRDD1.lookup(3)
kvRDD1.lookup(5)
15 Broadcast⼴播变量(共享常亮)
1)不使⽤Boradcast⼴播变量的情况
val kvFruit=sc.parallelize(List((1, “apple”),
(2,”orange”),(3, “banana”),(4, “grape”)))
val fruitMap = kvFruit.collectAsMap()
val fruitIds=sc.paralelize(List(2,4,1,3))
val fruitNames=fruitIds.map(x=>fruitMap(x)).collect
2)使⽤Boradcast⼴播变量的情况
val kvFruit=sc.parallelize(List((1, “apple”),
(2,”orange”),(3, “banana”),(4, “grape”)))
val fruitMap = kvFruit.collectAsMap()
val bcFruitMap=sc.broadcast(fruitMap)
val fruitIds=sc.parallelize(List(2,4,1,3))
val fruitNames =
fruitIds.map(x=>bcFruitMap.value(x)).collect
16 accumulator累加器
val intRDD = sc.parallelize(List(3,1,2,5,5))
val total = sc.accumulator(0.0)
val num = sc.accumulator(0)
intRDD.foreach(i=>{
total += i
num += 1})
println(“total=”+total.value+“, num=”+num.value)
val avg=total.value / num.value
17 RDD Persistence持久化
(1)建⽴RDD范例
val intRddMemory = sc.parallelize(List(3,1,2,5,5))
intRddMemory.persist()
intRddMemory.unpersist()
(2) 设定存储等级
import org.apache.spark.storage.StorageLevel
val intRddMemoryAndDisk = sc.parallelize(List(3,1,2,5,5))
intRddMemoryAndDisk.persist(StorageLevel.MEMORY_AND_DISK)

intRddMemoryAndDisk.unpersist()


18 使⽤Spark建⽴WordCount(这个运算电脑要有之前的WordCount )
:quit

Ls

cd workspace/

 Ls

 rm -R WordCount/

 mkdir -p~/workspace/WordCount/data

cd ~/workspace/WordCount/data

gedit test.txt

 

Apple Apple Orange

Banana Grape Grape

 

 

valtextFile=sc.textFile("file:/home/zwxq/workspace/WordCount/data/test.txt")

val stringRDD=textFile.flatMap(line=>line.split(" "))

stringRDD.collect

 

 

val countsRDD=stringRDD.map(word=>(word,1)).reduceByKey(_+_)

 countsRDD.saveAsTextFile("file:/home/zwxq/workspace/WordCount/data/output")



查看评论

spark 部署在hadoop yarn

软件环境: Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64) Hadoop: 2.6.0 Spark: 1.3.0 0 写...
  • wolvesqun
  • wolvesqun
  • 2016年10月09日 22:29
  • 1326

hadoop spark 大数据集群环境搭建(一)

大数据云计算现在比较热门,未来的一个发展方向,在此分享下技术,有不对的地方欢迎指出 1、软件环境(会分享到网盘)         centos6.5 jdk1.7 hadoop2.4.1(这里只用到h...
  • albert_lz
  • albert_lz
  • 2015年11月21日 01:50
  • 2089

【Hadoop】Spark可执行的代码样例

这里的demo改自spark的原始example。 本人亲测可以执行。
  • lsttoy
  • lsttoy
  • 2016年11月25日 15:59
  • 1533

hadoop或者spark 增加节点

增加节点。 复制一个虚拟机。 配置hosts文件,检查是否能ssh通。   Hadoop: scp /usr/local/hadoop/hadoop-2.6.0/etc/hadoop/s...
  • lxhandlbb
  • lxhandlbb
  • 2016年12月23日 20:38
  • 716

Spark-在工作集上进行集群计算

Spark-在工作集上进行集群计算 MateiZaharia, Mosharaf Chowdhury,Michael J. Franklin, Scott Shenker, Ion Stoica 加利...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2017年02月11日 19:24
  • 1572

<Hadoop>Spark On Hadoop集群安装

#需要调用hadoop client,在hadoop已经安装好的基础上 1.卸载其他版本的scala sudo apt-get purge scala sudo apt-get remove sc...
  • awsxsa
  • awsxsa
  • 2016年06月10日 15:22
  • 1369

Spark和Hadoop书籍、学习视频网站推荐

1.Spark   (1)Spark快速大数据分析         介绍:由spark开发者编写,无过多实现细节,注重基础理念,适合小白版可以让数据科学家和工程师即刻上手。你能学到如何使用简短的代码实...
  • u013560925
  • u013560925
  • 2018年03月24日 16:34
  • 97

Hadoop伪分布式-----Spark的安装和配置

在前面几章已经搭建好Hadoop环境,本节主要介绍在Hadoop基础上搭建Spark平台 1 下载所需安装包 1)下载spark安装包      2)下载Scala安装包,并解压安装包本例以下面版...
  • u012535605
  • u012535605
  • 2017年03月30日 20:27
  • 645

spark主节点Master挂掉后,备用节点(standby)如何恢复集群状态

spark恢复,master节点恢复
  • u014052851
  • u014052851
  • 2017年08月20日 23:37
  • 565

关于Hadoop分布式计算:多个Map分布在不同节点上执行

1 背景&问题     学习Hadoop已经快一年了,也是似懂非懂的样子。由于项目的原因,再次启动Hadoop,一直以为这个很简单就能够实现多个机器一起完成一个任务,其实并不然。在实验过程中,发现Ma...
  • sanmao5
  • sanmao5
  • 2016年07月16日 19:16
  • 1730
    个人资料
    持之以恒
    等级:
    访问量: 6049
    积分: 654
    排名: 7万+
    博客专栏
    更多内容
    更多知识分享交流尽在个人微信公众号 java一号
    最新评论