Spark wordcount

Spark wordcount_第1张图片

val file=sc.textFile(“D:/BigDataTools/helloworld.txt”)
//内置对象sc,去加载一个文件
//懒加载,不会立即去加载file这个文件,所以这一步文件名写错了也不会报错
val rdd=file.flatMap(line=>line.split(" “)).map(word=>(word,1)).reduceByKey(+)
//它也不会立即执行。
rdd.collect()
rdd.foreach(println)
Spark wordcount_第2张图片
分步执行
//val rdd1=file.flatMap(line=>line.split(” "))flatMap执行的操作是按空格分割,形成一个列表
Spark wordcount_第3张图片

//val rdd2=rdd1.map(word=>(word,1)) map操作是按照键值对的形式显示
Spark wordcount_第4张图片
//val rdd3=rdd2.reduceByKey(+)
Spark wordcount_第5张图片

实验二:
import scala.math.random

val num=500000;
val numRdd=sc.parallelize(1 to num)
val count=numRdd.map{
n=>{
val x=random2-1
val y=random
2-1
if(xx+yy<1)
1
else
0
}
}reduce(+)
println(4.0*count/num)
Spark wordcount_第6张图片

http://localhost:4040/jobs/
Spark wordcount_第7张图片

实验三:数据去重
val rdd=sc.makeRDD(Array(“2012-3-7 a”,“2012-3-7 a”,“2012-3-7 b”,“2012-3-7 a”,“2012-3-7 b”))
rdd.filter(_.trim().length>0).map(line=>(line,trim,"")).groupByKey().sortByKey().keys.collect
.foreach(println)

rdd.distinct().foreach(println)
Spark wordcount_第8张图片

如何编译执行?
在spark shell中是测试
真正写代码是需要编译的,需要sbt这个工具
配置文件
test.sbt
name:=

WordCount.scala
import org.apache.spark

cd到代码的路径下

实验四:流计算
sparkstreaming

import org.apache.spark.streaming._

val ssc=new StreamingContext(sc,Seconds(10))

val lines=ssc.textFileStream(“file:///D://BigDataTools”)

val words=lines.flatMap(.split(" "))
val wordCount=words.map(x=>(x,1)).reduceByKey(
+_)
wordCount.print()
ssc.start()
ssc.awaitTermination()
到目录中修改新增文件,就会把这些变化给找出来
Spark wordcount_第9张图片

真实案例
jupyter在网页上写代码并执行
customer表
category表
product表
order表
order_items表
scala写的

你可能感兴趣的:(大数据)