[大数据]spark入门 in python(一)HelloWorld
来源:互联网 发布:node.js 开发web的优势 编辑:程序博客网 时间:2024/05/16 10:50
之前由于工作的需要玩了快一年的hadoop,做了一些数据分析的基础工作。
自然,hadoop用做离线分析还是完全满足需求的,无论是自己写mapreduce代码开发
又或者使用hive来便利分析,但是面对实时计算,就需要跟高一层级的框架了,storm,spark
就是对应的技术了,于是自己开始学习spark,作为半路出家的选手自然选用了python作为开发语言
下面就是自己的spark学习笔记了,主要参考书籍:Spark快速大数据分析
spark支持多种开发语言,scala,java,python等
scala,java都不熟,于是乎采用了python,一种:一种方法解决所有问题的语言。
一句话总结: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")
测试中还发现,spark-submit可以智能的识别应用的一些py模块,比如import一个myconf.py文件
或者一个包都可以无需添加任何代码运行(只单机实验)。
第一次接触下来对比写hadoop的mapreduce代码,spark的封装调用相对来说简单了不少。
- [大数据]spark入门 in python(一)HelloWorld
- Apache Spark大数据分析入门(一)
- Apache Spark大数据分析入门(一)
- Apache Spark大数据分析入门(一)
- Apache Spark大数据分析入门(一)
- spark大数据入门(一)如何在windows下部署spark开发环境
- spark入门(helloworld插件)
- spark大数据分析(一)
- Spark快速大数据分析-Spark介绍(一)
- spark大数据入门(三)--RDD的简单解析
- Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)
- Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)
- RabbitMQ (一)入门Helloworld
- RabbitMQ (一)入门 Helloworld
- RabbitMQ (一)入门 Helloworld
- RabbitMQ (一)入门 Helloworld
- Hibernate入门(一)HelloWorld
- Jfinal(一)--------入门HelloWorld
- JS原型和闭包
- js的Ajax学习
- 网站建设的基本流程
- C++析构函数为什么要为虚函数
- android:EditText控件imeOptions属性
- [大数据]spark入门 in python(一)HelloWorld
- javascript的初步阶段学习day1------慕课网
- ViewPager实现Tab布局
- MB466光驱位改下SSD硬盘
- 另一个前端优化
- GCD笔记和问题汇总
- 线程
- POJ 3414 BFS 模拟求最快方式
- C++学习笔记--STL(映射:map)