如何将Python连接到Spark会话并保持RDD活着

时间:2016-11-06 02:43:53

标签: python apache-spark visual-studio-2015 pyspark

如何让一个小的Python脚本挂钩到现有的Spark实例并对现有的RDD进行操作?

我正处于在Windows 10上使用Spark的早期阶段,在“本地”实例上尝试脚本。我正在使用Spark的最新稳定版本(适用于Hadoop 2.7的Spark 2.0.1)。我已经为Hadoop 2.7.3安装并设置了环境变量。我正在用Python试验Pyspark shell和Visual Studio 2015社区。

我正在尝试构建一个大型引擎,我将运行单个脚本来加载,按摩,格式化和访问数据。我确信有一个正常的方法可以做到这一点;这不是Spark的意思吗?

无论如何,这是我迄今为止的经历。这通常是预料之中的。当我在Python中构建一个小的Spark脚本并使用Visual Studio运行它时,脚本会运行,完成它的工作并退出。在退出的过程中,它也退出了它正在使用的Spark上下文。

所以我有以下想法:如果我在Pyspark中启动持久的Spark上下文,然后在每个Python脚本中设置我的SparkConf和SparkContext以连接到Spark上下文怎么办?因此,在线查看Pyspark的默认值,我尝试了以下内容:

conf = SparkConf().setMaster("local[*]").setAppName("PySparkShell")
sc = SparkContext(conf = conf)

我开始了Pyspark。在Visual Studio的单独脚本中,我将此代码用于SparkContext。我将一个文本文件加载到名为RDDFromFilename的RDD中。但是一旦脚本运行,我就无法在Pyspark shell中访问该RDD。

如何启动持久性Spark Context,在一个Python脚本中创建RDD,并从后续Python脚本访问该RDD?特别是在Windows?

2 个答案:

答案 0 :(得分:3)

Spark中没有解决方案。你可以考虑:

我认为只有这些只有Zeppelin正式支持Windows。

答案 1 :(得分:1)

对于那些可能关注的人:我最近发现了SnappyData。

SnappyData还很年轻,并且有一点学习曲线,但它承诺做的是创建一个可以在多个Spark作业之间共享的持久可变SQL集合,并且可以作为RDD和DataFrame本地访问。它有一个作业服务器,您可以将并发作业转储到。

它本质上是一个GemFire内存数据库与同一JVM中本地的Spark集群的组合,因此(当我管理它时)我可以完成大型任务,没有单机瓶颈来管道数据和在Spark之外,或者我甚至可以在另一个Spark程序运行相同数据时进行实时数据操作。

我知道这是我自己的答案,但我可能不会将其标记为 的答案,直到我变得足够复杂,能够就如何解决我的问题发表意见。