将代码从 spark 1.x 移植到 spark 2.x
.master("local[2]")
.appName("spark session example")
.getOrCreate()1234
.master("local[2]")
.appName("spark session example")
.enableHiveSupport()
.getOrCreate()12345
val df0 = spark.read
.option("header","true")
.csv("src/main/resources/test.csv")
val df1 = spark.read.parquet("...")
val df2 = spark.read.json("...")
val df3 = spark.sql("xxx")
1234567891011121314
DataFrame
DataSet
ds1.show
//|value|
//+-----+
//| a|
//| b|
//+-----+123456789
val data = Seq(Person("lsw", 23), Person("yyy", 22))
val ds2 = spark.createDataset(data)
ds2.show
//|name|age|
//+----+---+
//| lsw| 23|
//| yyy| 22|
//+----+---+1234567891011
val df = spark.read.text("/path/to/data.txt")
//返回 DataSet[String]
val ds1 = spark.read.textFile("/path/to/data.txt")
//或者读取成DataFram再转化成Dataset
val ds2 = spark.read.text("/path/to/data.txt").as[String]123456
常用API
val lines = sc.textFile("/path/to/data.txt")
val res = lines
.flatMap(_.split(" "))
.filter(_ != "")
val rdd = sc.makeRDD(Seq(1, 2, 3, 4))
rdd.reduce((a, b) => a + b)123456789
val lines = spark.read.textFile("/path/to/data.txt")
val res = lines
.flatMap(_.split(" "))
.filter(_ != "")
val ds = Seq(1, 2, 3, 4).toDs
ds.reduce((a, b) => a + b)123456789
reduceByKey
.reduceByKey(_+_)12
.mapGroups((key,values) =>(key,values.length))12
RDD,DataFrame,Dataset的相互转化
//Dataset转化为RDD
val ds2rdd = ds.rdd
//Dataset转为DataFrame
val ds2df = ds.toDF
val rdd2ds = rdd.toDS
//RDD转化为DataFrame
val rdd2df = rdd.toDF
val df2rdd = df.rdd
//DataFrame转化为DataSet
val df2ds = df.as[Type]
12345678910111213141516
wordCount
hello spark12
val wordCount = rdd
.map(word => (word,1))
.reduceByKey(_+_)1234
val wordCount1 = lines
.flatMap(r => r.split(" "))
.groupByKey(r => r)
.mapGroups((k, v) => (k, v.length))
wordCount1.show
// +-----+--------+
// |value|count(1)|
// +-----+--------+
// |hello| 2|
// |spark| 1|
// |world| 1|
// +-----+--------+
val wordCount2 = lines
.flatMap(r => r.split(" "))
.groupByKey(v => v)
.count()
wordCount2.show
// +-----+---+
// | _1| _2|
// +-----+---+
// |hello| 2|
// |spark| 1|
// |world| 1|
// +-----+---+123456789101112131415161718192021222324252627
// +----+--------+-----------+---------+-----------+
// |name|database|description|tableType|isTemporary|
// +----+--------+-----------+---------+-----------+
// |table| null| null|TEMPORARY| true|
// |act | default| null| EXTERNAL| false|
// +----+--------+-----------+---------+-----------+
1234567
df.createOrReplaceTempView("table")
12
createOrReplaceTempView
1
df.cache
catalog.cacheTable("table")
catalog.isCached("table")
123456
将代码从 spark 1.x 移植到 spark 2.x的更多相关文章
- (一)Spark简介-Java&Python版Spark
Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...
- Spark学习(四) -- Spark作业提交
标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...
- Spark入门实战系列--1.Spark及其生态圈简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...
- Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...
- Spark入门实战系列--4.Spark运行架构
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appli ...
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...
- Spark入门实战系列--7.Spark Streaming(下)--实时流计算Spark Streaming实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源 ...
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...
- Spark入门实战系列--8.Spark MLlib(下)--机器学习库SparkMLlib实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .MLlib实例 1.1 聚类实例 1.1.1 算法说明 聚类(Cluster analys ...
随机推荐
- MFC停靠窗口实现(CDockablePane)
工作中编写MFC界面程序时用到了停靠窗口,为了避免之后用到时再去查询,这里记录下. 步骤 1.定义一个继承自CDockablePane的类 Class CDockableTest : public C ...
- ABP框架系列之三十五:(MVC-Controllers-MVC控制器)
Introduction ASP.NET Boilerplate is integrated to ASP.NET MVC Controllers via Abp.Web.Mvc nuget pack ...
- k-th smallest 问题总结
k-th smallest/biggest 问题大约有这几道: 373. Find K Pairs with Smallest Sums 从两个list里各取一个数求和,求所有可能的sum里第k小的 ...
- webpack Cannot find module 'webpack/schemas/WebpackOptions.json'
webpack-dev-server版本的问题 一直在解决这个问题,最后竟然发现...安装2.9.1版本就可以了 npm install webpack-dev-server@2.9.1
- VS2015离线安装NuGet Package
在一些情况下,VS2015直接安装NuGet Package的时候,速度异常缓慢: 所以还是考虑直接离线安装: Step1: 下载相应的Package https://www.nuget.org/ 然 ...
- java技术突破要点
一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...
- 人脸识别准备 -- 基于raspberry pi 3b + movidius
最近准备系统地学习一下深度学习和TensorFlow,就以人脸识别作为目的. 十年前我做过一些图像处理相关的项目和研究,涉及到图像检索.记得当时使用的是SIFT特征提取,该特征算子能很好地抵抗图像旋转 ...
- HTTPS抓包之Charles
这里对HTTP请求的抓包操作不做讲解了,只讲解HTTPS的抓包要进行的操作. [说明]:下面以MAC电脑示例,Windows版本可参考:http://weibo.com/ttarticle/p/sho ...
- 9.9 翻译系列:数据注解特性之--MaxLength 【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/maxlength-minlength-dataannotations-attribut ...
- 注意:Tomcat Get请求的坑!
Tomcat8.5,当Get请求中包含了未经编码的中文字符时,会报以下错误,请求未到应用程序在Tomcat层就被拦截了. Tomcat报错: java.lang.IllegalArgumentExce ...