1.1  Spark交互式分析

执行Spark脚本前,启动Hadoop的HDFS和YARN。Spark的shell提供

了简单方式去识别API。相同也有一个强大的工具去交互式地分析数据。

两种语言有这种交换能力,各自是Scala 和 Python。以下将演示怎样使用Python来分析数据文件。

进入Spark安装主文件夹,输入以下的命令。python命令行模式将会启动。

./bin/pyspark

Spark的主要抽象是一个称之为弹性分布式数据集(Resilient Distributed Dataset,RDD)。RDD可以从Hadoop输入格式(InputFormat。比方HDFS文件),或者通过转换其他RDDs。这里。我们将上传Spark主文件夹下的README文件上传到Hadoop的文件系统/user/app(app是我的linuxusername)文件夹下。详细的命令例如以下:

hdfs dfs –mkdir–p /user/app
hdfs dfs –putREADME.md /usr/app

使用Python创建一个新的弹性分布式数据集,定义例如以下。

>>>textFile = sc.textFile("README.md")

RDD有actions,。它可以返回值以及转换transformations,也可以返回指向新的RDD的指针。以下就是几个RDD的action操作。

>>>textFile.count() # 返回这个RDD的数据项个数
126 >>>textFile.first() # 返回这个RDD的第一项数据
u'# ApacheSpark'

如今让我们使用一个转换(transformation)。我们将使用filter转换返回一个新的RDD,伴随着文件里的数据项的子集。

>>>linesWithSpark=textFile.filter(lambdaline:"Spark"inline)

我们可以链式化转换和动作:

>>> textFile.filter(lambda line:"Spark"inline).count()# How many linescontain "Spark"?

15

RDD动作和转换可以被用作更为复杂的计算,看以下的样例。

>>> textFile.map(lambdaline: len(line.split())).reduce(lambda a, b: aif (a > b)elseb)
15

这个參数的第一项映射一行的数据到一个integer值,创建一个新的RDD。

reduce在RDD上被调用。用于找到一个最大的行数。map和reduce的參数是Python匿名函数lambdas。与此同一时候,你也可以传入不论什么你想要的顶级Python函数。

不如,以下就是传入的一个Python函数。

>>> defmax(a, b):
... if a > b:
... return a
... else:
... return b
... >>>textFile.map(lambda line: len(line.split())).reduce(max)
15

Spark高速上手之交互式分析的更多相关文章

  1. Spark高速入门指南(Quick Start Spark)

    版权声明:本博客已经不再更新.请移步到Hadoop技术博客:https://www.iteblog.com https://blog.csdn.net/w397090770/article/detai ...

  2. Spark SQL慕课网日志分析(1)--系列软件(单机)安装配置使用

    来源: 慕课网 Spark SQL慕课网日志分析_大数据实战 目标: spark系列软件的伪分布式的安装.配置.编译 spark的使用 系统: mac 10.13.3 /ubuntu 16.06,两个 ...

  3. 【原】Spark中Client源码分析(二)

    继续前一篇的内容.前一篇内容为: Spark中Client源码分析(一)http://www.cnblogs.com/yourarebest/p/5313006.html DriverClient中的 ...

  4. 【原】Spark中Master源码分析(二)

    继续上一篇的内容.上一篇的内容为: Spark中Master源码分析(一) http://www.cnblogs.com/yourarebest/p/5312965.html 4.receive方法, ...

  5. 【原】Spark中Master源码分析(一)

    Master作为集群的Manager,对于集群的健壮运行发挥着十分重要的作用.下面,我们一起了解一下Master是听从Client(Leader)的号召,如何管理好Worker的吧. 1.家当(静态属 ...

  6. 【原】 Spark中Worker源码分析(二)

    继续前一篇的内容.前一篇内容为: Spark中Worker源码分析(一)http://www.cnblogs.com/yourarebest/p/5300202.html 4.receive方法, r ...

  7. Spark Scheduler模块源码分析之TaskScheduler和SchedulerBackend

    本文是Scheduler模块源码分析的第二篇,第一篇Spark Scheduler模块源码分析之DAGScheduler主要分析了DAGScheduler.本文接下来结合Spark-1.6.0的源码继 ...

  8. Spark Scheduler模块源码分析之DAGScheduler

    本文主要结合Spark-1.6.0的源码,对Spark中任务调度模块的执行过程进行分析.Spark Application在遇到Action操作时才会真正的提交任务并进行计算.这时Spark会根据Ac ...

  9. Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

    本文由  网易云发布. 1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提 ...

随机推荐

  1. 牛客小白月赛3 B 躲藏【动态规划/字符串出现cwbc子序列多少次】

    链接:https://www.nowcoder.com/acm/contest/87/B来源:牛客网 XHRlyb和她的小伙伴Cwbc在玩捉迷藏游戏 Cwbc藏在多个不区分大小写的字符串中. 好奇的X ...

  2. Python的网络编程[6] -> Modbus 协议 -> Modbus 的基本理论与 Python 实现

    Modbus协议 / Modbus Protocol 目录 Modbus 协议简介 Modbus RTU协议 Modbus TCP协议与 Python 实现 Modbus 功能码 Modbus TCP ...

  3. FZU-2219 StarCraft(贪心)

     Problem 2219 StarCraft Accept: 294    Submit: 860Time Limit: 1000 mSec    Memory Limit : 32768 KB   ...

  4. Codeforces 246E - Blood Cousins Return (树上启发式合并)

    246E - Blood Cousins Return 题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k-ancestor,每个节点有名字,名字不唯一.多次查询,给出 u k ...

  5. luogu P3819 松江1843路

    题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...

  6. 基于Bootstrap的表格插件bootstrap-table

    写在前面: 表格在项目中是使用比较多的,bootstrap-table插件也是非常好用,而且表格页面也比较好看.这里也简单的记录下. 下面直接看demo吧,代码中都注释了,有些用法,这里没有用到,需要 ...

  7. Linux下分区、格式化、自动挂载

    说明:现在硬盘基本没有了IDE,所以基本是从SCSI开始说起,第一块硬盘标示为sda,第二块为sdb,以此类推.那么第一块硬盘的第一个分区为sda1,也是以此类推. 一.硬盘分区 sudo fdisk ...

  8. Matlab梯度下降及正规方程实现多变量的线性回归

    如果需要代做算法,可以联系我...博客右侧有联系方式. 一.相关概念 1.梯度下降 由于Z= X*theta - y是列向量,所以Z'*Z就是平方和连加,就是2范数:如果Z是矩阵呢,那么Z'*Z的对角 ...

  9. Android Rx Android实战

    上一次捣蛋 RxAndroid 是今年二月份的事情了,当时 RxAndroid 还处于一个资料甚少交流难的状态,当时还特意建了一个交流群,让搞这个的人可以加进来讨论讨论,毕竟这玩意还是挺有意思的,于是 ...

  10. ES6中的迭代器(Iterator)和生成器(Generator)(一)

    用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简化数据操作 ...