spark之1:快速入门

@(SPARK)[spark, 大数据]

spark可以通过交互式命令行及编程两种方式来进行调用:
前者支持scala与python
后者支持scala、python与java

本文参考https://spark.apache.org/docs/latest/quick-start.html,可作快速入门

再详细资料及用法请见https://spark.apache.org/docs/latest/programming-guide.html

建议学习路径:

1、安装单机环境:http://blog.csdn.net/jediael_lu/article/details/45310321

2、快速入门,有简单的印象:本文http://blog.csdn.net/jediael_lu/article/details/45333195

3、学习scala

4、深入一点:https://spark.apache.org/docs/latest/programming-guide.html

5、找其它专业资料或者在使用中学习

一、基础介绍

1、spark的所有操作均是基于RDD(Resilient Distributed Dataset)进行的,其中R(弹性)的意思为可以方便的在内存和存储间进行交换。

2、RDD的操作可以分为2类:transformation 和 action,其中前者从一个RDD生成另一个RDD(如filter),后者对RDD生成一个结果(如count)。

二、命令行方式

只要机器上有java与scala,spark无需任何安装、配置,就可直接运行,可以首先通过运行:

./bin/run-example SparkPi 10

检查是否正常,然后再使用下面介绍的shell来执行job。

1、快速入门

$ ./bin/spark-shell

(1)先将一个文件读入一个RDD中,然后统计这个文件的行数及显示第一行。

scala> var textFile = sc.textFile("/mnt/jediael/spark-1.3.1-bin-hadoop2.6/README.md")
textFile: org.apache.spark.rdd.RDD[String] = /mnt/jediael/spark-1.3.1-bin-hadoop2.6/README.md MapPartitionsRDD[1] at textFile at <console>:21scala> textFile.count()
res0: Long = 98scala> textFile.first();
res1: String = # Apache Spark

(2)统计包含spark的行数

scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:23scala> linesWithSpark.count()
res0: Long = 19

(3)以上的filter与count可以组合使用

scala> textFile.filter(line => line.contains("Spark")).count()
res1: Long = 19

2、深入一点

(1)使用map统计每一行的单词数量,reduce找出最大的那一行所包括的单词数量

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res2: Int = 14

(2)在scala中直接调用java包

scala> import java.lang.Math
import java.lang.Mathscala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res2: Int = 14

(3)wordcount的实现

scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[8] at reduceByKey at <console>:24scala> wordCounts.collect()
res4: Array[(String, Int)] = Array((package,1), (For,2), (processing.,1), (Programs,1), (Because,1), (The,1), (cluster.,1), (its,1), ([run,1), (APIs,1), (computation,1), (Try,1), (have,1), (through,1), (several,1), (This,2), ("yarn-cluster",1), (graph,1), (Hive,2), (storage,1), (["Specifying,1), (To,2), (page](http://spark.apache.org/documentation.html),1), (Once,1), (application,1), (prefer,1), (SparkPi,2), (engine,1), (version,1), (file,1), (documentation,,1), (processing,,2), (the,21), (are,1), (systems.,1), (params,1), (not,1), (different,1), (refer,2), (Interactive,2), (given.,1), (if,4), (build,3), (when,1), (be,2), (Tests,1), (Apache,1), (all,1), (./bin/run-example,2), (programs,,1), (including,3), (Spark.,1), (package.,1), (1000).count(),1), (HDFS,1), (Versions,1), (Data.,1), (>...

3、缓存:将RDD写入缓存会大大提高处理效率

scala> linesWithSpark.cache()
res5: linesWithSpark.type = MapPartitionsRDD[2] at filter at <console>:23
scala> linesWithSpark.count()
res8: Long = 19

三、编码

scala代码,还不熟悉,以后再运行

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConfobject SimpleApp {def main(args: Array[String]) {val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your systemval conf = new SparkConf().setAppName("Simple Application")val sc = new SparkContext(conf)val logData = sc.textFile(logFile, 2).cache()val numAs = logData.filter(line => line.contains("a")).count()val numBs = logData.filter(line => line.contains("b")).count()println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))}
}

spark之1:快速入门相关推荐

  1. 【Spark】介绍 快速入门

    目录 介绍 Spark and Hadoop Spark or Hadoop 核心模块 Spark Core Spark SQL Spark Streaming Spark MLlib Spark G ...

  2. 一二, Spark概述和快速入门

    一, Spark概述 1.1 什么是Spark Spark是一种基于内存的快速,通用,可扩展的大数据分析计算引擎; "Apache Spark" is a unified anal ...

  3. spark之scala快速入门

    scala和java都是在jvm之上的语言,相对来讲,scala热度比较低,其实并不是一个特别好的语言选择. 原因倒不是因为scala本身的缺点,而是使用人群不够多,论坛和社区不够活跃.这就跟社交软件 ...

  4. Spark快速入门指南 – Spark安装与基础使用

    本文转载自Spark快速入门指南 – Spark安装与基础使用 Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象.Spark 正如其名,最大的特点就是快(Lightni ...

  5. Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN

    快速入门 使用 Spark Shell 进行交互式分析 基础 Dataset 上的更多操作 缓存 独立的应用 快速跳转 本教程提供了如何使用 Spark 的快速入门介绍.首先通过运行 Spark 交互 ...

  6. [学习笔记]黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通,基于Python语言的spark教程

    文章目录 视频资料: 思维导图 一.Spark基础入门(环境搭建.入门概念) 第二章:Spark环境搭建-Local 2.1 课程服务器环境 2.2 Local模式基本原理 2.3 安装包下载 2.4 ...

  7. Spark Steaming快速入门

    Spark Steaming Spark Streaming 简介 什么是Spark Streaming Spark Streaming使用Spark Core的快速调度功能来执行流分析.它以小批量方 ...

  8. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...

  9. Flash Builder 4快速入门----学习笔记

    代码 第三章 Flash Builder 4 新特性 3.1 Package explorer(包资源管理器) 3.2 悬停时的ASDoc提示 3.3 Getter & Setter 如在一个 ...

最新文章

  1. shell中几个特殊的符号
  2. photoshop的页面制作练习1
  3. 数据库-优化-groupby的优化
  4. 在deepin上安装YouCompleteMe
  5. javascript对象包含哪些要素_javascript有哪几种对象?
  6. [react] react怎么拿到组件对应的DOM元素?
  7. 我的一些学习经验:WIFI
  8. java 继承与多态的区别_【转】 【JavaSE】继承与多态的理解与区别
  9. Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
  10. [转载]Unity3D 访问Access数据库
  11. spring中context:property-placeholder
  12. 永中Office Linux版
  13. typedef的使用详解
  14. 图片验证码获取及验证
  15. APP测试与WEB测试
  16. mysql主从配置文件
  17. excel隐藏行的展现方法
  18. 量化交易10-backtrader回测乌云盖顶K线形态图
  19. ensp三层交换机配置实验
  20. 七个关键心理学(2)损失厌恶

热门文章

  1. 计算机网络实验(思科模拟器Cisco Packet Tracer)——交换机配置以及虚拟局域网VLAN
  2. 方法的重载与重写_深入解析JAVA重载与重写的区别
  3. python列表的内置方法_Python内置方法详解
  4. json java对象 简书_Java 对象的 Json 化与反 Json 化
  5. docker构建容器服务
  6. 系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)
  7. 自动化运维工具——ansible安装及模块介绍
  8. 初识BGP外部网关协议(二)
  9. php 腾讯云 文字识别_腾讯云安全为何成为企业首选?4大原因成为制胜王道
  10. 【手把手带你学nRF52832/nRF52840 · 开发环境搭建】