Spark练习代码
1、scalaWordCount
package com._51doit.spark.day1
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object ScalaWorldCount {
def main(args: Array[String]): Unit = {
//第一步:创建SparkContext
val conf: SparkConf = new SparkConf().setAppName("ScalaWorldCount")
val sc = new SparkContext(conf)
//第二步,指定以后从hdfs中读取数据创建RDD(神奇的大集合)
//正确但是不建议sc.textFile(args(0)).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile(args(1))
val lines: RDD[String] = sc.textFile(args(0))
//切分压平
val words: RDD[String] = lines.flatMap(_.split(""))
//将单词和1组合在一起
val wordAndOne: RDD[(String, Int)] = words.map((_,1))
//聚合
val reduced: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_,1)
//排序
val sorted: RDD[(String, Int)] = reduced.sortBy(_._2,false)
//将数据保存到HDFS中
sorted.saveAsTextFile(args(1))
//最后释放资源
sc.stop()
}
}
2、FavTeacherInSubject
package com._51doit.spark.day2 import java.net.URL import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object FavTeacherInSubject { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(this.getClass.getSimpleName) val sc = new SparkContext(conf) val lines: RDD[String] = sc.textFile(args(0)) //处理数据
val subjectTeacherAndOne: RDD[((String, String), Int)] = lines.map(line => {
val teacher = line.substring(line.lastIndexOf("/") + 1)
val url = new URL(line)
val host = url.getHost
val subject = host.substring(0, host.indexOf("."))
((subject, teacher), 1)
}) //聚合
val reduced: RDD[((String, String), Int)] = subjectTeacherAndOne.reduceByKey(_+_) //按照学科进行分组
val grouped: RDD[(String, Iterable[((String, String), Int)])] = reduced.groupBy(_._1._1) //组内排序
val sorted: RDD[(String, List[((String, String), Int)])] = grouped.mapValues(_.toList.sortBy(-_._2).take(2)) //把数据保存到hdfs
sorted.saveAsTextFile(args(1)) sc.stop() }
}
3、(根据IP规则,计算用户的地区分布数量)
package com._51doit.spark.day3 import com._51doit.spark.utils.MyUtil
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} import scala.collection.mutable.ArrayBuffer object IpLocation { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(this.getClass.getSimpleName) val sc = new SparkContext(conf) //指定以后从哪里读取数据创建RDD
val accessLog: RDD[String] = sc.textFile(args(0)) //对数据进行处理
val provinceAndOne: RDD[(String, Int)] = accessLog.map(line => {
val fields = line.split("[|]")
val ip = fields(1)
val ipNum = MyUtil.ip2Long(ip)
val province = IpRulesUtil.binarySearch(ipNum)
(province, 1)
}) //聚合
val reudced: RDD[(String, Int)] = provinceAndOne.reduceByKey(_+_) reudced.saveAsTextFile(args(1)) sc.stop()
} }
package com._51doit.spark.day3
import java.io.{BufferedReader, InputStreamReader}
import java.net.URI
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FSDataInputStream, FileSystem, Path}
import scala.collection.mutable.ArrayBuffer
object IpRulesUtil {
//初始化一个集合
val ipRules = new ArrayBuffer[(Long, Long, String)]()
//hdfs的读取数据的过程
val conf = new Configuration()
val fs: FileSystem = FileSystem.get(URI.create("hdfs://node-1.51doit.com:9000"), conf)
val in: FSDataInputStream = fs.open(new Path("/iprules/ip.txt"))
val reader = new BufferedReader(new InputStreamReader(in))
var line = reader.readLine()
while (line != null) {
val fields = line.split("[|]")
val startNum = fields(2).toLong
val endNum = fields(3).toLong
val province = fields(6)
ipRules.append((startNum, endNum, province))
line = reader.readLine()
}
def binarySearch(ip: Long) : String = {
var low = 0
var high = ipRules.length - 1
while (low <= high) {
val middle = (low + high) / 2
if ((ip >= ipRules(middle)._1) && (ip <= ipRules(middle)._2))
return ipRules(middle)._3
if (ip < ipRules(middle)._1)
high = middle - 1
else {
low = middle + 1
}
}
"未知"
}
}
Spark练习代码的更多相关文章
- Spark SQL 代码简要阅读(基于Spark 1.1.0)
Spark SQL允许相关的查询如SQL,HiveQL或Scala运行在spark上.其核心组件是一个新的RDD:SchemaRDD,SchemaRDDs由行对象组成,并包含一个描述此行对象的每一列的 ...
- 整合Kafka到Spark Streaming——代码示例和挑战
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管.本文,Michael详细的演示了如 ...
- 合并Spark社区代码的正确姿势
原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...
- Spark测试代码
测试代码: import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.hive.HiveContext ...
- Spark算子代码实践
package com.dingxin.datainit import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.Spa ...
- Idea 编写 Spark 示例代码并打包成Jar
说明:本人是在Linux下搭建的单机Spark环境,也是在Linux下使用Idea14.02进行代码编辑 1. 打开IDEA,在欢迎界面从右下角的Configure -> Plugins进入,安 ...
- python+spark程序代码片段
处理如此的字符串: time^B1493534543940^Aid^B02CD^Aasr^B叫爸爸^Anlp^B{"domain":"com.abc.system.cha ...
- spark java 代码example
https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples
- Spark菜鸟学习营Day6 分布式代码运行调试
Spark菜鸟学习营Day6 分布式代码运行调试 作为代码调试,一般会分成两个部分 语法调试,也就是确定能够运行 结果调试,也就是确定程序逻辑的正确 其实这个都离不开运行,所以我们说一下如何让开发的S ...
随机推荐
- Paper | 亚像素运动补偿 + 视频超分辨
目录 1. ABSTRACT 2. INTRODUCTION 3. RELATED WORKS 4. SUB-PIXEL MOTION COMPENSATION (SPMC) 5. OUR METHO ...
- 我的第一个python爬虫
我的第一个爬虫,哈哈,纯面向过程 实现目标: 1.抓取本地conf文件,其中的URL地址,然后抓取视频名称以及对应的下载URL 2.抓取URL会单独写在本地路径下,以便复制粘贴下载 废话补多少,代码实 ...
- day14_雷神_前端02
# 前端day02 1. html标签 1. span标签设置宽高 设置宽高后,字体不会发生变化. 2. 盒模型 padding是border里面的距离: margin 是border边框外头的了属于 ...
- 单源最短路径算法——Bellman-ford算法和Dijkstra算法
BellMan-ford算法描述 1.初始化:将除源点外的所有顶点的最短距离估计值 dist[v] ← +∞, dist[s] ←0; 2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V ...
- php 从2维数组组合为四维数组分析(项目中前台侧边栏导航三级分类显示)
foreach函数(循环函数)内嵌套循环函数时,当内层完全循环完后,才会向上一级循环 数组要注意问题 array_merge----合并一个或多个数组 将一个或多个数组的单元合并起来,一个数组中的值附 ...
- javascript从作用域到闭包-笔记
读<你不知道的javascript>一书做个笔记;编译原理: js是一门编译型的语言,与传统编译语言类似,传统编译的过程分为三个阶段 ; 1. 分词/词法分析; 2.解析/语 ...
- 生成多个git ssh密钥
如果你已经有了一套名为 id_rsa 的公秘钥,将要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字. 步骤如下: 1.生成一个新的自定义名称的公钥: ssh-keygen -t r ...
- Shell-7--环境变量配置文件
环境变量配置文件修改后需要重启才生效,如果想不重启生效,需要 source 配置文件 . 配置文件
- location-alias
location /images/ { alias /project/pic/; } 给定的路径对应于location的"/url" 这个URL; /images/f.jpg -- ...
- java几种垃圾收集方法和垃圾收集器
标记清除法: 分为两个阶段,标记----清除 标记阶段将所有需要回收的对象做标记,然后在清除阶段将所有的标记对象回收 但是这种回收方法有很大的缺点,那就是这两个过程的的效率并不高,两个过程都是效率很低 ...