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.如何在程序中使用共享变 ...
随机推荐
- Python十大应用领域与就业方向
参考链接:https://baijiahao.baidu.com/s?id=1604847283884842928&wfr=spider&for=pc 正文: 近些年,编程语言Pyth ...
- HDU计算机学院大学生程序设计竞赛(2015’12)Happy Value
Problem Description In an apartment, there are N residents. The Internet Service Provider (ISP) want ...
- hdu-2036求任意多边形面积
改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- Xsheel远程链接ECS,Xftp上传文件到ECS
下载Xshell 工具:用来远程实现远程访问. 下载Xftp工具:方便用来上传文件. 下载方式直接百度搜索,如下如: 下载完成之后安装. 接下来就是链接云服务器了. 直接百度经验按照步骤来就OK了,如 ...
- TCP通讯模型简单示例
1. TCP通讯模型 2. 服务器端 ① 创建socket,用函数socket() ② 绑定IP地址.端口号等信息到socket上,用函数bind() ③ 设置允许的最大连接数,用函数listen() ...
- hive 全表全字段对比
select * from ( select max(t1.source) as source ,t1.c1 ,t1.c2 ,t1.c3 ,count(*) as cnt from ( as sour ...
- python数据库的增删改查
#coding=utf- from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlal ...
- 数据库版本管理工具flyway
引入flyway_core jar包 java 代码实现 public class FlywayMigration { @Resource private DataSource dataSource ...
- 性能测试工具LoadRunner23-LR之Analysis 性能分析
一.图表分析 1.Average Transaction Response Time(事务平均响应时间) “事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测 ...
- windows当代理服务器-CCProx的使用
参考 https://jingyan.baidu.com/article/0f5fb099ef3a2c6d8234ea75.html 在ubuntu下设置网络代理,选择手动方式