03、IDEA下Spark API编程
03、IDEA下Spark API编程
3.1 编程实现Word Count
3.1.1 创建Scala模块
3.1.2 添加maven支持,并引入spark依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.oldboy</groupId>
<artifactId>myspark</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</project>
3.1.3 编写scala程序
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by Administrator on 2018/5/8.
*/
object WordCountScala {
def main(args: Array[String]): Unit = {
//1.创建spark配置对象
val conf = new SparkConf()
//设置App名称
conf.setAppName("wcApp")
//设置master
conf.setMaster("local")
//2.创建spark上下文件对象
val sc = new SparkContext(conf)
//3.加载文件
val rdd1 = sc.textFile("d:/mr/1.txt")
//4.压扁
val rdd2 = rdd1.flatMap(_.split(" "))
//5.标1成对
val rdd3 = rdd2.map(w => (w,1))
//6.化简
val rdd4 = rdd3.reduceByKey(_ + _)
//收集数据
val arr = rdd4.collect()
arr.foreach(println)
}
}
3.1.4 编写java程序
package com.oldboy.spark.java;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
*
*/
public class WordCountJava {
public static void main(String[] args) {
//1.创建配置对象
SparkConf conf = new SparkConf() ;
conf.setAppName("wcApp") ;
conf.setMaster("local") ;
//2.创建java版的上下文
JavaSparkContext sc = new JavaSparkContext(conf) ;
//3.加载文件
JavaRDD<String> rdd1 = sc.textFile("d:/mr/1.txt");
//4.压扁
JavaRDD<String> rdd2 = rdd1.flatMap(new FlatMapFunction<String, String>() {
public Iterator<String> call(String s) throws Exception {
String[] arr = s.split(" ");
return Arrays.asList(arr).iterator();
}
}) ;
//5.标一成对
JavaPairRDD<String,Integer> rdd3
= rdd2.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) throws Exception {
return new Tuple2<String, Integer>(s , 1);
}
}) ;
//6.化简
JavaPairRDD<String,Integer> rdd4
= rdd3.reduceByKey(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
}) ;
//7.收集
List<Tuple2<String,Integer>> list = rdd4.collect();
for(Tuple2<String,Integer> t : list){
System.out.println(t._1() + " : " + t._2);
}
}
}
3.2 编程实现温度统计
3.2.1 创建Scala模块
3.2.2 添加maven,引入Spark依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.oldboy</groupId>
<artifactId>myspark</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</project>
3.2.3 编写Scala程序
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by Administrator on 2018/5/8.
*/
object TempAggScala {
def main(args: Array[String]): Unit = {
//1.创建spark配置对象
val conf = new SparkConf()
//设置App名称
conf.setAppName("TempAgg")
//设置master
conf.setMaster("local")
//2.创建spark上下文件对象
val sc = new SparkContext(conf)
//3.加载文件
val rdd1 = sc.textFile("d:/mr/temps.dat")
//4.变换形成嵌套的元组
val rdd2 = rdd1.flatMap(line=>{
val arr = line.split(" ")
(arr(0).toInt , (arr(1).toInt ,arr(1).toInt))
})
//5.化简
val rdd3 = rdd2.reduceByKey((a,b)=>{
import scala.math
val max = math.max(a(0) , b(0))
val min = math.min(a(1) , b(1))
(max,min)
})
//6.收集数据
val arr = rdd3.collect()
arr.foreach(println)
}
}
3.2.4 编写Java程序
package com.oldboy.spark.java;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
import scala.Tuple4;
import java.util.List;
/**
* 统计气温数据
*/
public class TempAggJava {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setAppName("tempAggJava");
conf.setMaster("local") ;
//创建JavaSparkContext对象
JavaSparkContext sc = new JavaSparkContext(conf);
//1.加载文件,返回JavaRDD对象
JavaRDD<String> rdd1 = sc.textFile("d:/mr/temp.dat");
//2.变换
JavaPairRDD<Integer, Tuple4<Integer, Integer, Double, Integer>> rdd2
= rdd1.mapToPair(new PairFunction<String,
Integer,
Tuple2<Integer,Integer>>() {
public Tuple2<Integer, Tuple2<Integer, Integer>> call(String s)
throws Exception {
String[] arr = s.split(" ");
int year = Integer.parseInt(arr[0]) ;
int temp = Integer.parseInt(arr[1]) ;
return new Tuple2<Integer, Tuple2<Integer, Integer>>(year,
new Tuple2<Integer,Integer>(temp , temp)) ;
}
}) ;
//3.聚合
JavaPairRDD<Integer, Tuple4<Integer, Integer, Double, Integer>> rdd3
= rdd2.reduceByKey(
new Function2<Tuple2<Integer, Integer>,
Tuple2<Integer, Integer>,
Tuple2<Integer, Integer>>() {
public Tuple2<Integer, Integer> call(Tuple2<Integer, Integer> v1,
Tuple2<Integer, Integer> v2)
throws Exception {
int max = Math.max(v1._1(),v2._1()) ;
int min = Math.min(v1._2(),v2._2()) ;
return new Tuple2<Integer, Integer>(max, min) ;
}
}) ;
//收集
List<Tuple2<Integer, Tuple2<Integer, Integer>>> list = rdd3.collect();
for(Tuple2<Integer, Tuple2<Integer, Integer>> t : list){
System.out.println(t);
}
}
}
03、IDEA下Spark API编程的更多相关文章
- Maya API编程快速入门
一.Maya API编程简介 Autodesk® Maya® is an open product. This means that anyone outside of Autodesk can ch ...
- 利用SparkLauncher 类以JAVA API 编程的方式提交Spark job
一.环境说明和使用软件的版本说明: hadoop-version:hadoop-2.9.0.tar.gz spark-version:spark-2.2.0-bin-hadoop2.7.tgz jav ...
- Spark(十) -- Spark Streaming API编程
本文测试的Spark版本是1.3.1 Spark Streaming编程模型: 第一步: 需要一个StreamingContext对象,该对象是Spark Streaming操作的入口 ,而构建一个S ...
- Spark SQL 编程API入门系列之SparkSQL的依赖
不多说,直接上干货! 不带Hive支持 <dependency> <groupId>org.apache.spark</groupId> <artifactI ...
- 第03讲:Flink 的编程模型与其他框架比较
Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 本课时我们主要介绍 ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
- Spark Graphx编程指南
问题导读1.GraphX提供了几种方式从RDD或者磁盘上的顶点和边集合构造图?2.PageRank算法在图中发挥什么作用?3.三角形计数算法的作用是什么?Spark中文手册-编程指南Spark之一个快 ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
- Spark分布式编程之全局变量专题【共享变量】
转载自:http://www.aboutyun.com/thread-19652-1-1.html 问题导读 1.spark共享变量的作用是什么?2.什么情况下使用共享变量?3.如何在程序中使用共享变 ...
随机推荐
- Navicat12破解
Navicat12破解 http://www.sdbeta.com/xiazai/2017/0818/209765.html
- 使用Spring和JQuery实现视频文件的上传和播放
Spring MVC可以很方便用户进行WEB应用的开发,实现Model.View和Controller的分离,再结合Spring boot可以很方便.轻量级部署WEB应用,这里为大家介绍如何使用Spr ...
- 基于python检测端口是否在使用
开发中,需要开启Modbus Slave服务,但是,modbus_tk 并没有提供一个端口检测的方法,导致 modbus_tcp.TcpServer(port=502) 时候会提示端口被占用 于是需要 ...
- vue 子组件调用父组件的函数
子组件调用父组件的函数,使用$emit(eventName,[...args]),触发当前实例上的事件.附加参数都会传给监听器回调. 子组件 <template> <div> ...
- 获取项目路径js
var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: myproj/view/my.jsp ...
- UGUI Image血条或者进度条效果
把图片的Image组件中的image type选成Filled,下面就出现了Fill Amount,通过GetComponent<Image>().fillAmount; 就可以拿到flo ...
- LeetCode 441.排列硬币(C++)
你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围内. 示例 ...
- 微服务(Micro Service Architecture)浅析
最近一段时间,微服务的概念很火,可能是跟Docker技术的快速发展和壮大有一定的关系,同时借助于Uber.Netflix.Groupon等公司的实践.宣传和推广,使得MSA渐渐地成为企业或者架构师讨论 ...
- 案例49-crm练习获取客户列表带有分页和筛选功能
1 案例分析 2 书写步骤 1.封装PageBean 2.书写Action 3.书写Service 4.书写Dao 注意清空之前设置的聚合函数 dc.setProjection(null); 5 ...
- https的设计原理
参考文章: https://www.cnblogs.com/zhangshitong/p/6478721.html http://blog.jobbole.com/113883/ 这两篇文章写的非常好 ...