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. django 访问静态资源

    urlpatterns = patterns('', url(r'^$', views.show, name='index'), url(r'^static/(?P<path>.*)', ...

  2. python3 repr()函数笔记

    a=[1,2,3,4]print(repr(a))print(type(repr(a)))for i in repr(a): print(i)#repr函数是将对象转换成string类型

  3. 解决哈希(HASH)冲突的主要方法

    https://blog.csdn.net/xtzmm1215/article/details/47177701   虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的.当关键字值域远大于哈希 ...

  4. c语言中有关0和1的运算问题

    /*有关0和1 的总结 最近做题总是混淆0 和 1 对于/ 和 %运算时候的结果怎么算 所以就上机试验了一番 结论: c语言中,0/任何数都为0 0%任何数都为0 1/任何数都为0 1%任何数都余1 ...

  5. CSS background 属性全家桶

    介绍我们都知道css的background属性是一个复合属性,可以简写成一行代码,也可以将每个属性分开来写. background 简写属性在一个声明中设置所有的背景属性.如:body{ backgr ...

  6. 转 python trace walk DEMO

    https://blog.csdn.net/steadfast123/article/details/46965125 #quote from 'introduction to computation ...

  7. ztree 获取最下级的子节点内容

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. CAD安装失败怎样卸载CAD 2014?错误提示某些产品无法安装

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

  9. OneDrive撸5T硬盘空间教程

    注意:要注册多个账户获取网盘的,用无痕模式打开临时教育邮箱网址.打开之后不要关闭,等会用来接收验证码. 1.需要office 365注册这时候需要教育邮箱: 临时教育邮箱:http://sysu.ed ...

  10. stm32串口学习(一)

    串口在工作中经常用到,今天我们从零开始学习stm32的串口编程(利用库函数). 先从最简单的情况开始,假设我们要实现的功能就是串口发送一个字节,不考虑接收,也不考虑中断. 那么要解决两个问题: 1 串 ...