http://blog.csdn.net/xnby/article/details/50782913

一句话总结:spark是一个基于内存的大数据计算框架,

上层包括了:Spark SQL类似HiveQL, Spark Streaming 实时数据流计算,MLlib 机器学习算法包,GraphX 图算法包

底层 SparkCore 实现了基本功能:任务调度,内存管理,错误恢复,存储交互等,SparkCore还包含了对RDD(弹性分布式数据集)的API定义

RDD是Spark对计算任务封装,现在不懂也没关系,后面会随着实例进一步理解RDD

一、Spark安装:

单机版本spark安装相当简单,从官网下载一个源码包,解压即可。http://spark.apache.org/downloads.html

解压,把bin目录加入环境变量,pyspark即可启动python shell

单机模式启动pyspark后

一个简单的demo:

>>>lines = sc.textFile("1.txt") //创建一个RDD,“1.txt为本地存在的文件

>>> lines

MapPartitionsRDD[4] at textFile at NativeMethodAccessorImpl.java:-2

>>> lines.count()

7

通过lines对象,可以调用基本的函数,统计单词数等

例子中sc是什么呢?SparkContext。

每一个spark应用都有一个驱动器程序()来发起集群上的各种并行操作,pyspark即驱动器程序,

驱动器程序通过一个SparkContext对象来访问Spark,sc代表对计算集群的一个连接。

驱动器程序一般要管理多个执行器节点,将计算任务分发给不同的节点计算。

下面继续完成大数据下的Helloword:word count 程序:

>>> words = lines.flatMap(lambda line: line.split(' '))

>>> words

PythonRDD[8] at RDD at PythonRDD.scala:43

>>> wc = words.map(lambda x:(x,1))

>>> wc

PythonRDD[9] at RDD at PythonRDD.scala:43

>>> from operator import add

>>> counts = wc.reduceByKey(add)

>>> counts

PythonRDD[14] at RDD at PythonRDD.scala:43

>>> counts.saveAsTextFile("wc")

示例中可以看出 lines,words,wc,counts都是RDD对象实例

每一步操作在Spark都是RDD的一个抽象

独立应用,不通过shell怎么写独立的脚本呢,

直接编写校本文件,然后通过spark-submit提交即可

eg:worldcount程序的py脚本如下:

########first.py############

from pyspark import SparkConf, SparkContext
from operator import add

conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf=conf)

lines = sc.textFile("/Users/xiabin/1.txt")

words = lines.flatMap(lambda line: line.split(' '))
wc = words.map(lambda x:(x,1))
counts = wc.reduceByKey(add)

counts.saveAsTextFile("wcres")

########first.py############

测试中还发现,spark-submit可以智能的识别应用的一些py模块,比如import一个myconf.py文件

或者一个包都可以无需添加任何代码运行(只单机实验)。

第一次接触下来对比写hadoop的mapreduce代码,spark的封装调用相对来说简单了不少。

附加信息:

http://www.tuicool.com/articles/iAbInuj

http://blog.csdn.net/kwu_ganymede/article/details/51832427

python大数据的更多相关文章

  1. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

  2. 学习推荐《零起点Python大数据与量化交易》中文PDF+源代码

    学习量化交易推荐学习国内关于Python大数据与量化交易的原创图书<零起点Python大数据与量化交易>. 配合zwPython开发平台和zwQuant开源量化软件学习,是一套完整的大数据 ...

  3. 零起点Python大数据与量化交易

    零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的“神奇公式” 2 1.1.1 案例1-1:亿万富翁的“神奇公式” 2 1.1.2 案例分析:Python图表 5 1 ...

  4. Python大数据与机器学习之NumPy初体验

    本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库. 通过本文系列文章您将能够学到的知识如下: 应用Python进行大数据与机器学习 应用 ...

  5. python大数据工作流程

    本文作者:hhh5460 大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + p ...

  6. 零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

    在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python ...

  7. Python大数据应用

    一.三国演义人物出场统计 先检查安装包 1.jieba库基本介绍 (1)jieba库概述 jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需 ...

  8. Python大数据:jieba 中文分词,词频统计

    # -*- coding: UTF-8 -*- import sys import numpy as np import pandas as pd import jieba import jieba. ...

  9. Python大数据:信用卡逾期分析

    # -*- coding:utf-8 -*- # 数据集成 import csv import numpy as np import pandas as pd import matplotlib.py ...

随机推荐

  1. C++_异常5-异常规范和栈解退

    异常规范 异常规范的理念看似有前途,但实际的使用效果并不好. 忽视异常规范之前,您至少应该知道它是什么样的,如下所示: double harm(double a) throw(bad_thing);  ...

  2. UVA_11624 Fire! 【BFS】

    一.题面 略 二.题意分析 一个迷宫中,有一个人Joe和一个或多个起火点,起火点可以蔓延,人可以走动,都只能走4个方向,问人能走出去的最少步数,如果不能输出不可能.很多大佬说是两遍BFS,先一遍火,记 ...

  3. 什么是javascript的中间件?

    第一次写博客,有点想在博客园试水的感觉,也分享下觉得有用的东西(源码自己写的) 什么是javascript中间件呢?函数middle就是用来构建中间件的,我用例子说明下 下面我定义了一个函数use,在 ...

  4. 下厨房---map/字符串查询

    题目描述 牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料. 输入描述: 每个输入包含 1 个测试用例.每个测试用例的第 i 行,表示完成第 i 件料理需要 ...

  5. centos 7更新yum源与更新系统

    1.备份/etc/yum.repos.d/下的原有文件(假如你想保留原系统的yum源的话),举例 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  6. EntityFramework 并发处理

    转载自:http://www.cnblogs.com/TianFang/p/4439215.html 什么是并发? 并发分悲观并发和乐观并发. 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档 ...

  7. mysql DQL语言操作

    SQL语句的执行顺序:from-where-group by-having-select-order by where 可以筛选多个条件,如 where  A and B 1.排序order by 列 ...

  8. HDU 4171 Paper Route

    Problem Description As a poor, tuition-ridden student, you've decided to take up a part time job as ...

  9. Linux的应用层到底层驱动的调用过程

    应用层如何内核.md 1.从应用层打通内核:驱动 首先来说是设备号的引入,我们通过 cat/proc/kallsyms |grep mydevice 可以查看设备号,当然我们也是可以自己创建设备号,这 ...

  10. 1.3 js基础

    1.操作样式 .style  操作行间样式 .className  直接修改class   2.操作属性 .  操作已有的属性 []  点能做的方括号都能做,方括号里放字符串,能放变量.     3. ...