文档章节

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

skanda
 skanda
发布于 2017/08/07 08:19
字数 554
阅读 53
收藏 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
粉丝 11
博文 93
码字总数 52962
作品 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
物联网应用协议学习笔记 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
Apache Kudu 1.5.0 发布,Hadoop 数据存储系统

Hadoop数据存储系统Apache Kudu 1.5.0已发布,升级说明: 从Kudu 1.5.0开始支持Spark2.2,Spark 2.2是Kudu 1.5.0的默认依赖版本。虽然Spark 2.x对Java 7是兼容的,但是结合Kudu使用Spark 2.2...

Li_Peng
2017/09/22
839
1

没有更多内容

加载失败,请刷新页面

加载更多

小程序异步操作 跨js执行 在微信小程序里面实现跨页面通信

我们知道,在小程序里面一个页面的变化,是通过调用 setData 函数来实现的。所以想做到在二级页面里让一级页面产生变化,最 Quick And Dirty 的做法就是把一级页面的 this 传入到二级页面去,...

xiaogg
11分钟前
0
0
授于管理员登录其它用户

1.沙盒中,授予管理员登录 安全性控制==>登录访问权限政策

在山的那边
13分钟前
1
0
线程安全的CopyOnWriteArrayList介绍

证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的。 ReadThread.java import java.util.List; public class ReadThread implements Runnable {......

绝地逢生
15分钟前
0
0
Java重写的7个规则

几年前你可能会遇到这样一个面试题:“重写和重载的区别”、而现在随着科技的更迭、面试的问题越来越高级、面试官的问题也越来越深入、此文是上述面试题的一个延伸、让你从简单的重写规则中更...

architect刘源源
15分钟前
1
0
JavaScript异步编程:Generator与Async

从Promise开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。 Promise是下边要讲的Generator/yield与async/await的基础,希望你已经提前了解了它。...

前端攻城老湿
16分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部