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练习代码的更多相关文章

  1. Spark SQL 代码简要阅读(基于Spark 1.1.0)

    Spark SQL允许相关的查询如SQL,HiveQL或Scala运行在spark上.其核心组件是一个新的RDD:SchemaRDD,SchemaRDDs由行对象组成,并包含一个描述此行对象的每一列的 ...

  2. 整合Kafka到Spark Streaming——代码示例和挑战

    作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管.本文,Michael详细的演示了如 ...

  3. 合并Spark社区代码的正确姿势

    原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...

  4. Spark测试代码

    测试代码: import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.hive.HiveContext ...

  5. Spark算子代码实践

    package com.dingxin.datainit import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.Spa ...

  6. Idea 编写 Spark 示例代码并打包成Jar

    说明:本人是在Linux下搭建的单机Spark环境,也是在Linux下使用Idea14.02进行代码编辑 1. 打开IDEA,在欢迎界面从右下角的Configure -> Plugins进入,安 ...

  7. python+spark程序代码片段

    处理如此的字符串: time^B1493534543940^Aid^B02CD^Aasr^B叫爸爸^Anlp^B{"domain":"com.abc.system.cha ...

  8. spark java 代码example

    https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples

  9. Spark菜鸟学习营Day6 分布式代码运行调试

    Spark菜鸟学习营Day6 分布式代码运行调试 作为代码调试,一般会分成两个部分 语法调试,也就是确定能够运行 结果调试,也就是确定程序逻辑的正确 其实这个都离不开运行,所以我们说一下如何让开发的S ...

随机推荐

  1. python模块:time

    # encoding: utf-8 # module time # from (built-in) # by generator 1.145 """ This modul ...

  2. UVa 11645 Bits (暴力+组合数学)

    题意:给定一个数 n,求 0 ~ n,中二进制表示中连续两个 1 出现的次数. 析:枚举连续的两个 1,从低位向高位进行枚举,然后前可以是任意数,后面也是任意的,如果 n 正好是 11 还要另算,举个 ...

  3. 搭建repo服务器和上传源码

    https://blog.csdn.net/qq_28449863/article/details/79992191 https://blog.csdn.net/qq_28449863/article ...

  4. 我的第一个python爬虫

    我的第一个爬虫,哈哈,纯面向过程 实现目标: 1.抓取本地conf文件,其中的URL地址,然后抓取视频名称以及对应的下载URL 2.抓取URL会单独写在本地路径下,以便复制粘贴下载 废话补多少,代码实 ...

  5. InternalResourceViewResolver视图解析器(转)

    转载地址:https://www.cnblogs.com/liruiloveparents/p/5054605.html springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就 ...

  6. HPS基本概念及其设计

    DE1-SOC开发版上的FPGA在一个基于ARM的用户定制系统(SOC)中集成了分立处理器(HPS).FPGA和数字信号处理(DSP)功能.HPS是基于ARM cortex-A9双核处理器,具有丰富的 ...

  7. 《mysql必知必会》学习_第17章_20180807_欢

    第17章:组合查询 P114 select vend_id ,prod_id,prod_price from products where prod_price <=5 ; select ven ...

  8. vs2008快捷键一览表

    Ctrl+E,D ----             格式化全部代码 Ctrl+K,F ----             格式化选中的代码 CTRL + SHIFT + B          生成解决方 ...

  9. 【接口时序】3、UART串口收发的原理与Verilog实现

    一.软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45- ...

  10. 如何完美回答面试官问的Mybatis初始化原理!!!

    前言 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程. MyBatis的初始化做了什么 MyBatis基于XML配置文件 ...