Я пытаюсь представить скрипт Python на Spark, который должен использовать pos_tag
, но всякий раз, когда я делаю это, я получаю эту ошибку:
File "/hdata/dev/sdb1/hadoop/yarn/local/usercache/harshdee/appcache/application_1551632819863_0554/container_e36_1551632819863_0554_01_000009/pyspark.zip/pyspark/worker.py", line 98, in main
command = pickleSer._read_with_length(infile)
File "/hdata/dev/sdb1/hadoop/yarn/local/usercache/harshdee/appcache/application_1551632819863_0554/container_e36_1551632819863_0554_01_000009/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length
return self.loads(obj)
File "/hdata/dev/sdb1/hadoop/yarn/local/usercache/harshdee/appcache/application_1551632819863_0554/container_e36_1551632819863_0554_01_000009/pyspark.zip/pyspark/serializers.py", line 422, in loads
return pickle.loads(obj)
ImportError: No module named nltk.tag
Я использую эту команду:
spark-submit --master yarn --driver-memory 32G --num-executors 20 --executor-memory 16G --executor-cores 6 --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./NLTK/nltk_env/bin/python --conf spark.executorEnv.PYTHON_EGG_CACHE="./.python-eggs/" --conf spark.executorEnv.PYTHON_EGG_DIR="./.python-eggs/" --conf spark.driverEnv.PYTHON_EGG_CACHE="./.python-eggs/" --conf spark.driverEnv.PYTHON_EGG_DIR="./.python-eggs/" --conf spark.yarn.appMasterEnv.NLTK_DATA=./ --conf spark.executorEnv.NLTK_DATA=./ --archives nltk_env.zip#NLTK,tokenizers.zip#tokenizers,taggers.zip#taggers --py-files helpers.py,const.py --packages com.databricks:spark-xml_2.10:0.3.5,com.databricks:spark-csv_2.10:1.5.0 <name-of-script>.py
Я подозреваю, что при использовании среды на рабочих узлах устанавливаются сторонние библиотеки, но nltk_data
, такие как тегеры и токенизаторы, могут быть недоступны.
Какую команду следует использовать, чтобы сделать ее более доступной и запустить ее в кластере?