use*_*383 6 python apache-spark rdd pyspark
我的问题是当我输入 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()
Run Code Online (Sandbox Code Playgroud)
您必须区分不同的情况:
脚本提交时使用$SPARK_HOME/bin/spark-submit script.py
在本例中,您执行 Scala 应用程序,该应用程序又启动 Python 解释器。由于 Scala 应用程序不期望来自标准输入的任何交互,更不用说将其传递给 Python 解释器,因此您的 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
Run Code Online (Sandbox Code Playgroud)
并使用标准方法(例如sys.argvor )进行访问argparse,并且 usinginput既没有必要也没有用。