繁体   English   中英

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

[英]How to Connect Python to Spark Session and Keep RDDs Alive

如何将一个小的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?

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

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

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

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

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

我知道这是我自己的答案,但我可能不会将其标记为答案 ,直到我足够成熟,对如何很好地解决了我的问题的意见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM