pyspark 中的函数 input()

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)

zer*_*323 3

您必须区分不同的情况:

  • 脚本提交时使用$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既没有必要也没有用。