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编程的更多相关文章

  1. Maya API编程快速入门

    一.Maya API编程简介 Autodesk® Maya® is an open product. This means that anyone outside of Autodesk can ch ...

  2. 利用SparkLauncher 类以JAVA API 编程的方式提交Spark job

    一.环境说明和使用软件的版本说明: hadoop-version:hadoop-2.9.0.tar.gz spark-version:spark-2.2.0-bin-hadoop2.7.tgz jav ...

  3. Spark(十) -- Spark Streaming API编程

    本文测试的Spark版本是1.3.1 Spark Streaming编程模型: 第一步: 需要一个StreamingContext对象,该对象是Spark Streaming操作的入口 ,而构建一个S ...

  4. Spark SQL 编程API入门系列之SparkSQL的依赖

    不多说,直接上干货! 不带Hive支持 <dependency> <groupId>org.apache.spark</groupId> <artifactI ...

  5. 第03讲:Flink 的编程模型与其他框架比较

    Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 本课时我们主要介绍 ...

  6. winsock教程- windows下的socket编程(c语言实现)

    winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程     这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...

  7. Spark Graphx编程指南

    问题导读1.GraphX提供了几种方式从RDD或者磁盘上的顶点和边集合构造图?2.PageRank算法在图中发挥什么作用?3.三角形计数算法的作用是什么?Spark中文手册-编程指南Spark之一个快 ...

  8. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

  9. Spark分布式编程之全局变量专题【共享变量】

    转载自:http://www.aboutyun.com/thread-19652-1-1.html 问题导读 1.spark共享变量的作用是什么?2.什么情况下使用共享变量?3.如何在程序中使用共享变 ...

随机推荐

  1. HDU计算机学院大学生程序设计竞赛(2015’12)The Magic Tower

    Problem Description Like most of the RPG (role play game), “The Magic Tower” is a game about how a w ...

  2. http文件上传/下载

    package unit; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputSt ...

  3. phpstudy+phpstorm配置xdebug

    配置这个xdebug真的是一个很崎岖的过程.首先在网上搜了一下资料~说要下载xdebug对应的版本~然后打印phpinfo之类一堆~结果没有起作用~当时一直就觉得是不是版本不对.然后在群里面问别个给我 ...

  4. python模块之urllib

    python文档官网地址:https://docs.python.org/3.6/library/urllib.html?highlight=urllib urllib 是一个收集以下模块以处理URL ...

  5. Vue 中怎么发起请求(二)

    fetch 是新一代XMLHttpRequest的一种替代方案.无需安装其他库.可以在浏览器中直接提供其提供的api轻松与后台进行数据交互. 基本用法: 1 fetch(url,{parmas}).t ...

  6. join合并字符串时使用生成器表达式

    data=['11','pp','aa'] ','.join(str(d) for d in data)

  7. javassist fr8.0破解

    主要是破解连接数的. 已破解的jar:http://download.csdn.net/download/wolf12/9834152 public static void main(String[] ...

  8. 在IE8下background-image不显示的解决方法

    刚写一个页面,在chrome,FF里调试完后,忽然想起ie来,放到Ie里其它还好了,但是有个背景图片显示不出来. 调试N遍后,只好上stackoverflow去找一下,果然找到了. 最初是这样写的: ...

  9. maya2018安装失败如何卸载重装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  10. 对象池2(方法功能)Pools

    对象池Pools(主要调用方法功能) namespace kernal { public class Pools : MonoBehaviour { [HideInInspector] public ...