Skip to main content
 首页 » 编程设计

python之从常规 python 启动 pyspark

2024年10月24日28虾米哥

所以我正在为另一个应用程序构建一个 python 扩展。我想在我的扩展中使用 pyspark 来做一些流式传输,但我遇到了麻烦,因为父应用程序使用普通的旧 python 调用我的扩展。

我将无法更改父应用程序调用我的扩展程序的方式,那么如何从我的 python 代码中启动 pyspark 或 spark-submit?

我实际上还没有为 pyspark 编写代码。我想先启动并运行 SparkContext。但是对于这个问题,让我们使用 Spark 网站上的字数统计示例:

from pyspark import SparkContext 
 
 
if __name__ == "__main__": 
    if len(sys.argv) != 2: 
        print("Usage: wordcount <file>", file=sys.stderr) 
        exit(-1) 
    sc = SparkContext(appName="PythonWordCount") 
    lines = sc.textFile(sys.argv[1], 1) 
    counts = lines.flatMap(lambda x: x.split(' ')) \ 
                  .map(lambda x: (x, 1)) \ 
                  .reduceByKey(add) 
    output = counts.collect() 
    for (word, count) in output: 
        print("%s: %i" % (word, count)) 
 
    sc.stop() 

如何从另一个 python 程序运行此应用程序?

请您参考如下方法:

好吧,我终于明白了。这似乎对我有用

import sys,os 
sys.path.append(os.environ['SPARK_HOME'] + '/python') 
sys.path.append(os.environ['SPARK_HOME']+ '/python/build') 
sys.path.append(os.environ['SPARK_HOME'] + '/python/pyspark') 
 
#This part was neccesary for me, since I have a weird set up  
sys.path.insert('0' + '/usr/bin') 
 
import pyspark 
sc = pyspark.SparkContext()