Когда вы конвертируете .1 или 1/10 в base 2 (двоичный), вы получаете повторяющийся шаблон после десятичной точки, точно так же, как пытаетесь представить 1/3 в базе 10. Значение не является точным, и поэтому вы можете 't делать точную математику с ней, используя обычные методы с плавающей запятой.
Чтобы использовать режим Spark in Yarn, вам необходимо установить любые зависимости к машинам, на которых начинается пряжа исполнителей. Это единственный верный способ сделать эту работу.
Использование режима Spark with Yarn cluster - это совсем другая история. Вы можете распространять зависимости python с помощью spark-submit.
spark-submit --master yarn-cluster my_script.py --py-files my_dependency.zip
Однако ситуация с numpy осложняется тем же, что делает ее так быстро: тот факт, что делает тяжелый подъем в C. Из-за того, что он установлен, вы выиграли ' t можно распределять numpy таким образом.
sudo pip install numpy
Кажется, переустановка numpy с помощью «sudo», и этот модуль можно найти.
http://www.cloudera.com/documentation/enterprise/5-5-x/topics/spark_python.html
Вы также можете проверить эту статью. Это очень хорошо описывает вашу проблему.
numpy не установлен на рабочих (виртуальных) машинах. Если вы используете anaconda, очень удобно загружать такие зависимости python при развертывании приложения в режиме кластера. (Поэтому нет необходимости устанавливать numpy или другие модули на каждой машине, вместо этого они должны быть в вашем anaconda). Во-первых, застегните свою anaconda и поместите zip-файл в кластер, а затем вы можете отправить задание, используя следующий скрипт.
spark-submit \
--master yarn \
--deploy-mode cluster \
--archives hdfs://host/path/to/anaconda.zip#python-env
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pthon-env/anaconda/bin/python
app_main.py
Пряжа скопирует anaconda.zip из пути hdfs каждому работнику и используйте pthon-env / anaconda / bin / python для выполнения задач.
См. Запуск PySpark с Virtualenv может предоставить дополнительную информацию.
У меня была аналогичная проблема, но я не думаю, что вам нужно установить PYSPARK_PYTHON вместо этого, просто установите numpy на рабочем компьютере (apt-get или yum). Ошибка также сообщит вам, на какой машине был импортирован.