文档章节

spark2.2官方教程笔记-快速开始

skanda
 skanda
发布于 2017/08/07 08:19
字数 554
阅读 41
收藏 0

spark官方教程包括以下几个模块

  1. 快速开始
  2. spark编程指南
  3. spark内建模块:a,spark流式编程;b,sparkSql,DataSets和DataFrames;c:MLlib内建机器学习库;d:图处理
  4. spark集群部署向导;
  5. 其它文档包括配置spark系统,监控,作业调度,安全支持等

快速开始:

    spark主要使用的分布式抽象集合工具是Dataset。Dataset创建方式有从Haddop InputForamtes创建,或者从其他DataSet转换而来。

Hadoop InputFormats方式:

scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]

    对于DataSet,我们可以直接获取数据,比如调用action方法,或者通过transform方法转换成一个新的数值;

action操作

scala> textFile.count() // Number of items in this Dataset
res0: Long = 126 // May be different from yours as README.md will change over time, similar to other outputs

scala> textFile.first() // First item in this Dataset
res1: String = # Apache Spark

tranform操作

scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]

transform+action操作

scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15

更多数据集操作

  Dataset action和transformations能被适用于更多更复杂的操作。比如获取一个文件中最多单词的行 所包含的单词数目

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res4: Long = 15

先用一个map,把每行的单词数统计出来。再用一个reduce,把 最多单词的行 所包含的单词数目返回回去。对于reduce中的操作,我们可以使用数学库中的max函数代替

scala> import java.lang.Math
import java.lang.Math

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res5: Int = 15

Caching

spark支持把数据集推送得到集群范围的内存中。在数据经常需要访问的时候这个函数时很有用。

spark应用例子

/* SimpleApp.scala */
import org.apache.spark.sql.SparkSession

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system
    val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
    val logData = spark.read.textFile(logFile).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs, Lines with b: $numBs")
    spark.stop()
  }
}

程序很简单,只是对spark的readme文件,获取包含字母a的行数和字母b的行数。

© 著作权归作者所有

共有 人打赏支持
skanda
粉丝 9
博文 88
码字总数 50007
作品 0
厦门
物联网应用协议学习笔记 2.2.1 阿里云IoT平台接入 开发准备

这篇笔记涉及 阿里云CoAP接入,其他物联网应用协议学习笔记可点此查看。 1 开通物联网套件 本节内容主要来自于阿里云官网,阿里云物联网套件 > 快速开始 > 高级版快速开始 > 开发准备。 开通...

iotisan
04/23
0
0
我的Python3萌新入门笔记

我的Python3萌新入门笔记 Python自动化运维2017-12-128 阅读 Python教程 先来个镇楼图! Python3萌新入门笔记是一系列真实的自学笔记。 当然,它也是比较全面的入门教程。 到上一篇笔记为止,...

Python自动化运维
2017/12/12
0
0
源码中的哲学——通过构建者模式创建SparkSession

spark2.2在使用的时候使用的是SparkSession,这个SparkSession创建的时候很明显的使用了创建者模式。通过观察源代码,简单的模拟了下,可以当作以后编码风格的参考: 官方使用 自己写的小例子...

青夜之衫
2017/12/04
0
0
Spark操作hive示例代码

示例代码 val sparkConf = new SparkConf().setAppName("hive example") val sc = new SparkContext(sparkConf) val hiveContext = new HiveContext(sc) val tableName="hive_test"; var spa......

守望者之父
06/15
0
0
开源电子书

目录 语言无关类 操作系统 智能系统 分布式系统 编译原理 函数式概念 计算机图形学 WEB服务器 版本控制 编辑器 NoSQL PostgreSQL MySQL 管理和监控 项目相关 设计模式 Web 大数据 编程艺术 ...

zting科技
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
49分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
126
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部