我的问题在于,当我输入p的值时,没有任何事情发生,它没有追求执行:有没有办法解决它?
import sys
from pyspark import SparkContext
sc = SparkContext("local", "simple App")
p =input("Enter the word")
rdd1 = sc.textFile("monfichier")
rdd2= rdd1.map(lambda l : l.split("\t"))
rdd3=rdd2.map(lambda l: l[1])
print rdd3.take(6)
rdd5=rdd3.filter(lambda l : p in l)
sc.stop()
你必须区分不同的情况:
$SPARK_HOME/bin/spark-submit script.py
提交的脚本
在这种情况下,您执行Scala应用程序,该应用程序又启动Python解释器。由于Scala应用程序不期望从标准输入进行任何交互,更不用说将其传递给Python解释器,因此您的Python脚本将暂停等待不会出现的数据。python script.py
)直接执行脚本。
您应该能够直接使用input
,但代价是处理所有配置细节,通常由spark-submit
/ org.apache.spark.deploy.SparkSubmit
处理,在您的代码中手动处理。通常,可以使用命令行传递脚本的所有必需参数
$SPARK_HOME/bin/spark-submit script.py some_app_arg another_app_arg
您可以使用py4j
通过Java获取输入
像这样
scanner = sc._gateway.jvm.java.util.Scanner
sys_in = getattr(sc._gateway.jvm.java.lang.System, 'in')
result = scanner(sys_in).nextLine()
print result