pyspark的rdd类的纯python模拟版本
dummy_spark的Python项目详细描述
dummyrdd
[![覆盖状态](https://coveralls.io/repos/github/wdm0006/DummyRDD/badge.svg?branch=master)](https://coveralls.io/github/wdm0006/DummyRDD?分支=主) [![生成状态](https://travis-ci.org/wdm0006/DummyRDD.svg?branch=master)](https://travis-ci.org/wdm0006/DummyRDD)
贡献者
- [Henrique Souza](https://github.com/htssouza)
- [Will McGinnis](https://gitbhub.com/wdm0006)
概述
一个测试类可以像rdd一样行走,像rdd一样说话,但只是一个列表。
包含3个主要类:
- SparkConf
- SparkContext
- RDD
所有这些都实现了与真正的spark方法完全相同的api,但是使用一个简单的 python列表作为实际的数据存储。许多函数,如hadoop api、分区、complex 操作和其他东西没有实现。实现的功能和 他们的警告。
注意,目前这是实验性的,以后可能对测试或开发有用,但是 使用这种方法开发出来的软件应该经常在真正的Spark上进行检查,以确保在那里工作。因为 这些代码实际上都不是在这个环境中分发的,有些东西的行为会有所不同。
这个库可以作为真正的spark上下文的替换,而不会出错 但实际上可能什么也不做(例如,在不相关的配置选项的情况下)。
目前没有对dataframe api的支持,也没有对任何东西的大多数特性的支持。 仍在进行中。
示例
一个简单的例子:
from dummy_spark import SparkContext, SparkConf
sconf = SparkConf() sc = SparkContext(master=’‘, conf=sconf) rdd = sc.parallelize([1, 2, 3, 4, 5])
print(rdd.count()) print(rdd.map(lambda x: x**2).collect())
产量:
5 [1, 4, 9, 16, 25]
实现的方法
sparkconf
sparkconf已经实现了所有的功能,但实际上什么都没有设置。没有真正的配置设置 虚拟版本,因此对象只包含配置参数的字典。因此,实现的功能是:
- __init__()
- contains()
- get()
- getAll()
- set()
- setAll()
- setAppName()
- setExecutorEnv()
- setIfMissing()
- setMaster()
- setSparkHome()
- toDebugString()
SparkContext
实现的功能有:
- __init__()
- __enter__()
- __exit__()
- defaultMinPartitions()
- defaultParallelism()
- emptyRDD()
- parallelize()
- NewAPIHadoopRDD() (only for elasticsearch via elasticsearch-py)
- range()
- startTime()
- stop()
- textFile() (including from s3 via tinys3)
- version()
RDD
实现的功能有:
- __init__()
- __add__()
- __repr__()
- cache()
- cartesian()
- checkpoint()
- cogroup()
- collect()
- context()
- count()
- countApprox()
- countApproxDistinct()
- distinct()
- filter()
- first()
- flatMap()
- flatMapValues()
- foreach()
- foreachPartition()
- getNumPartitions()
- glom()
- groupBy()
- groupByKey()
- id()
- intersection()
- isEmpty()
- lookup()
- map()
- mapPartitions()
- mapValues()
- max()
- mean()
- meanApprox()
- min()
- name()
- persist()
- reduceByKey()
- repartitionAndSortWithinPartitions()
- sample()
- setName()
- sortBy()
- sortByKey()
- sum()
- take()
- takeSample()
- toLocalIterator()
- union()
- zip()
- zipWithIndex()