文档章节

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

skanda
 skanda
发布于 2017/08/07 08:19
字数 554
阅读 32
收藏 0
点赞 0
评论 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
源码中的哲学——通过构建者模式创建SparkSession

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

青夜之衫
2017/12/04
0
0
我的Python3萌新入门笔记

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

Python自动化运维
2017/12/12
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
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
PHP Migrations——Doctrine Migrations教程

PHP Migrations——Doctrine Migrations教程 博文链接 : http://my.oschina.net/u/930926/blog/741477 版权声明:本文为博主原创文章,未经博主允许不得转载。 Doctrine Migrations github地...

小和
2016/09/02
95
0
Python 3 极简教程

Python 3 极简教程 吴小龙同學2017-10-119 阅读 Python 人生苦短,我用 Python! 今天上班的第一天,大家的状态如何昵,是否有假期综合症昵。从《 MySQL、Python 搞起 》,我已经开始自学 Py...

吴小龙同學
2017/10/11
0
0
Fanta/free-programming-books-zh_CN

免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版...

Fanta
2016/11/14
0
0
CoAP协议学习笔记 2.2 阿里云IoT平台接入 基础版CoAP协议接入测试

这篇笔记涉及 阿里云CoAP接入,CoAP协议学习笔记可点此查看。 1 前言 上篇笔记完成了云端产品功能定义,并生成了相应的设备证书。 这篇笔记将会跟着教程走,使用 Ubuntu 对 SDK 编译验证,先...

iotisan
05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring-@RequestBody

@RequestMapping("/login")    public void login(@RequestBody String userName,@RequestBody String pwd){      System.out.println(userName+" :"+pwd);    }    ......

说回答
5分钟前
0
0
Redis安装

大家可以通过该链接获取安装详情(这是一个Word文档,支持下载): http://note.youdao.com/noteshare?id=7a327ed6c58fb2037ba537e58ecf7510&sub=480DB8EF349747C3983B73AE94D45BB1 其他参考...

一梦心草
5分钟前
0
0
MySQL按天,按周,按月,按时间段统计【转载】

https://blog.csdn.net/qq_28056641/article/details/78306870 select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(creat......

李道福
7分钟前
0
0
浅谈parallelStream

parallelStream是什么,它是一个集合的并发处理流.其作用是把一个集合中的数据分片,进行一个多线程的处理,增快运行速度. 比如说这样一段代码 private Set<SysRole> sysRoles;private Set<St...

算法之名
9分钟前
3
0
器者,道之所载

形而上者谓之道,形而下者谓之器,化而裁之谓之变;推而行之谓之通,举而措之天下之民,谓之事业。—— 《道德经》

了凡川
10分钟前
0
0
C#命名规范中文版/C#编码规范中文版

最新文档地址https://github.com/hiramtan/CSharpNamingGuidelines_Chinese C#命名规范中文版/C#编码规范中文版 示例 /*****************************************************************......

海贝Hibey
12分钟前
0
0
刚从eclipse转到Intellij IDEA,分享一些配置经验

刚从eclipse转到Intellij IDEA,分享一些配置经验,IntelliJ IDEA作为最好的Java开发工具,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等...

舒文joven
13分钟前
1
0
lombok 引入后,测试类始终找不到get,set方法。

开发环境为idea,jdk1.7,maven3.5. 网上直接搜出来的方法有: 1、在setting里安装lombok的plugins; 2、如下图,勾选enable annocation processing选项 3、升级maven plugins插件 我尝试了以...

Kidult
19分钟前
0
0
Duang,HUAWEI DevEco IDE全面升级啦

想感受全新UI带来的视觉及交互体验、 HiKey970开发板调测、 HiAI API推荐和收藏、 深度AI模型分析等新功能, 体验高清晰度和流畅度的远程AI真机调测吗? 全新的UI设计 采用最优秀的视觉及交互...

华为终端开放实验室
28分钟前
1
0
阻止事件冒泡,阻止默认事件

1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event....

闫亚亚
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部