2017-01-08 52 views
1

這裏我的問題是當我輸入p的值時,什麼也沒有發生,它不追求執行:有沒有辦法修復它?pyspark中的函數輸入()

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() 

回答

1

你有不同的情況加以區分:

  • 腳本$SPARK_HOME/bin/spark-submit script.py

    提交在這種情況下,你執行Scala的應用程序,它依次啓動Python解釋器。由於Scala應用程序不希望與標準輸入有任何交互,更不用說將其傳遞給Python解釋器,您的Python腳本將只會掛起等待不會發生的數據。

  • 腳本直接使用Python解釋器執行(python script.py)。

    您應該可以直接使用input,但需要花費代碼手動處理所有配置細節,通常由​​/org.apache.spark.deploy.SparkSubmit處理。

一般而言,所有必需的參數爲你的腳本可以使用命令行

$SPARK_HOME/bin/spark-submit script.py some_app_arg another_app_arg 

傳遞和使用訪問像sys.argvargparse標準方法和使用input是既無必要,也非常有用。