pysparkling, Spark和DStream接口的Apache的纯 python 实现

分享于 

4分钟阅读

GitHub

  繁體 雙語
A native Python implementation of Spark's RDD interface.
  • 源代码名称:pysparkling
  • 源代码网址:http://www.github.com/svenkreiss/pysparkling
  • pysparkling源代码文档
  • pysparkling源代码下载
  • Git URL:
    git://www.github.com/svenkreiss/pysparkling.git
    Git Clone代码到本地:
    git clone http://www.github.com/svenkreiss/pysparkling
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/svenkreiss/pysparkling
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    https://raw.githubusercontent.com/svenkreiss/pysparkling/master/logo/logo-w100.png

    pysparkling

    Pysparkling 提供更快。更具响应性的方法,为PySpark开发程序。 它允许Spark应用程序的代码完全在 python 中执行,而不会导致通过JVM和Hadoop的初始化和传递数据的开销。 重点在于在小数据集上实现轻量级和快速的实现,以牺牲一些数据弹性特性和一些并行处理特性。

    如何工作? web 从到pysparkling执行脚本,让代码初始化pysparkling上下文,而使用pysparkling上下文来设置你的缩放。 美好是你不必在上下文初始化之后更改单行代码,因为pysparkling的API与pyspark的( 几乎) 完全相同。 因为在PySpark和pysparkling之间很容易 switch,所以你可以为你的用例选择合适的工具。

    我什么时候用? 如果你需要对大型数据集进行健壮的计算,那么你将编写Spark应用程序,但是你还希望同一个应用程序能够在小数据。 你发现Spark对于你的需求不够响应,但是你不希望重写整个单独的应用程序( 例如 small-answers-fast 问题)。 你宁愿用你的火花代码但不知怎么让它跑得快。 Pysparkling绕过了导致火花启动时间长和响应速度较低的东西。

    以下是pysparkling擅长的几个领域:

    • 小型到中等规模探索性数据
    • 应用程序Prototype设计
    • 低延迟网络部署
    • 单元测试

    安装

    pip install pysparkling[s3,hdfs,http,streaming]

    文档插件:

    https://raw.githubusercontent.com/svenkreiss/pysparkling/master/docs/readthedocs.png

    其它链接:Github问题追踪器,pypi-badge

    特性

    • 支持 s3://hdfs://。Google存储。web和本地文件访问的。gs://http://file://的URI方案。 指定多个用逗号分隔的文件。 解析 *? 通配符。
    • 处理 .gz.zip.lzma.xz.bz2.tar.tar.gz.tar.bz2 压缩文件。 支持读取 .7z 文件。
    • 通过 multiprocessing.Pool 进行并行化 concurrent.futures.ThreadPoolExecutor 或者其他任何具有 map(func, iterable) 方法的对象池。
    • 普通pysparkling没有任何依赖项( 使用 pip install pysparkling )。 某些文件访问方法具有可选的依赖项: boto 用于 AWS S3,requests的,用于hdfs的hdfs

    示例

    笔记本文档/演示文稿。ipynb文档和文档/iris。ipynb文档中都有一些演示文稿。

    字数

    from pysparkling import Context
    counts = (
     Context()
    . textFile('README.rst')
    . map(lambdaline: ''.join(ch if ch.isalnum() else''for ch in line))
    . flatMap(lambdaline: line.split(''))
    . map(lambdaword: (word, 1))
    . reduceByKey(lambdaa, b: a + b)
    )print(counts.collect())

    它打印出一连串的单词和它们的计数。


    IMP  Implementation  接口  spa  Apache  spark  
    相关文章