2016-07-14 10 views
2

Я могу запустить мой питон + pyspark скрипт из командной строки Unix, набравЗапуск сценария внутри pyspark оболочки

pyspark script.py 

Но как я бегу script.py внутри pyspark оболочки? Это кажется элементарным вопросом, но я не могу найти ответ нигде. Я попытался

execfile('script.py') 

Но я получаю ошибку, которая включает в себя:

ValueError: Cannot run multiple SparkContexts at once 
+0

Попробуйте 'subprocess.call' (https://docs.python.org/3/library/subprocess.html#subprocess.call). Я понимаю, что 'execfile' пытается оценить файл в том же экземпляре Python, тогда как с модулем' subprocess' вы можете создать другой экземпляр Python и PySpark без каких-либо конфликтов. – KartikKannapur

+0

Спасибо за отзыв. После выполнения моего кода и добавления chmod, я могу запустить код таким образом. Но после этого я не могу получить доступ к переменным в коде. Таким образом, это почти то же самое, что запуск pyspark script.py в unix. – user3433489

+0

Да, у вас не будет доступа к переменным, если вы не подключите их к другой переменной или не сохраните их в некоторой структуре данных. 'subprocess' только поможет вам вызвать другую искровую программу. Вы можете попробовать что-то похожее на 'subprocess.Popen' с' stdout = PIPE' – KartikKannapur

ответ

5

Может ошибка происходит из script.py пытается создать новое SparkContext переменного?

При запуске pyspark интерактивный клиент обычно говорит: SparkContext available as sc, HiveContext available as sqlContext.

Если ваш файл сценария содержит sc = SparkContext(), может попробовать комментируя его.

Смежные вопросы