spark RDD算子学习(基本命令)

来源:互联网 发布:js 头像裁剪插件 编辑:程序博客网 时间:2024/06/13 17:42

1、进入spark

  • 导入包对象
from pyspark import SparkContext, SparkConf
  • 初始化对象
conf = SparkConf().setAppName(appName).setMaster(master)sc = SparkContext(conf=conf)

如果使用的是命令行:对象则已经初始化好了

2 使用命令行

  • 使用4个cpu核心
 $ ./bin/pyspark --master local[4]
  1. 把code.py文件添加到搜索路径中
 $ ./bin/pyspark --master local[4] --py-files code.py
  1. 用ipython 启动命令行
$ PYSPARK_DRIVER_PYTHON=ipython ./bin/pyspark### 使用ipython notebook 选项$ PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook --pylabinline" ./bin/pyspark
  1. 更多命令
 ./bin/pyspark --help

3 RDD 介绍

Spark是以RDD概念为中心运行的。RDD是一个容错的、可以被并行操作的元素集合。创建一个RDD有两个方法:在你的驱动程序中并行化一个已经存在的集合;从外部存储系统中引用一个数据集,这个存储系统可以是一个共享文件系统,比如HDFS、HBase或任意提供了Hadoop输入格式的数据来源。

  • 构建并行化集合
data = [1, 2, 3, 4, 5]distData = sc.parallelize(data,2) #后面2表示使用分片数,一个集合对应2-4个分片
  • 加载外部数据集
distFile = sc.textFile("data.txt"2) #分片数为二textFile("/my/directory")#读取当前文件夹中全部textFile("/my/directory/*.txt")#读取全部txttextFile("/my/directory/*.gz")#读取全部gz
可写类型 Python类型 Text unicode str IntWritable int FloatWritable float DoubleWritable float BooleanWritable bool BytesWritable bytearray NullWritable None MapWritable dict

- 序列文件的保存与读取

rdd = sc.parallelize(range(1, 4)).map(lambda x: (x, "a" * x ))  rdd.saveAsSequenceFile("path/to/file")  #保存序列文件sorted(sc.sequenceFile("path/to/file").collect())   #读取序列文件并排序

4、RDD 的基本操作-wordcount程序

rdd1 =  sc.textFile("/spark/wc.txt") # 读取目标文件rdd2 = rdd1.map(lambda a : a.split(''))  #将每行切分成单词rdd3 = rdd.flatMap(lambda a:(a,1)) # 做map映射,这里的列表嵌套,所以用flatMaprdd4 = rdd.reduceByKey(lambda a,b:a + b) #按单词key 来统计数量rdd4.collect() # 结果
原创粉丝点击