Используйте spark_csv внутри Юпитера и используя Python
-
16-10-2019 - |
Вопрос
Моя конечная цель - использовать Jupyter вместе с Python для анализа данных с использованием SPARK. Текущее препятствие, которое я лицом, загружает внешний spark_csv
библиотека. Я использую Mac OS и Anaconda в качестве распределения Python.
В частности, следующее:
from pyspark import SparkContext
sc = SparkContext('local', 'pyspark')
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('file.csv')
df.show()
При обращении к доходности Юпитера:
Py4JJavaError: An error occurred while calling o22.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org
Вот подробно:
Соединение искры вместе с Юпитером
Мне удалось настроить Spark/Pyspark в Jupyter/ipython (с помощью Python 3.x).
Первоначальная настройка системы
На моей ОС XI установил Python с помощью Anaconda. Версия Python, которую я в настоящее время установил по умолчанию, составляет 3.4.4 (Anaconda 2.4.0). Обратите внимание, что я также установил также 2.x версию Python, используя conda create -n python2 python=2.7
.
Установка искры
Это на самом деле самый простой шаг; Загрузите последние двоичные файлы в ~/Applications
или какой -то другой каталог по вашему выбору. Далее, до архива tar -xzf spark-X.Y.Z-bin-hadoopX.Y.tgz
Анкет Для легкого доступа к Spark Создайте символическую ссылку на искру:
ln -s ~/Applications/spark-X.Y.Z-bin-hadoopX.Y ~/Applications/spark
Наконец, добавьте символическую ссылку Spark в путь:
export SPARK_HOME=~/Applications/spark
export PATH=$SPARK_HOME/bin:$PATH
Теперь вы можете запустить Spark/Pyspark на локальном уровне: просто вызвать spark-shell
или же pyspark
.
Установка Юпитера
Чтобы использовать Spark из ноутбука Юпитера, подготовьте следующее к PYTHONPATH
:
export PYTHONPATH=$SPARKHOME/python/lib/py4j-0.8.2.1-src.zip:$SPARKHOME/python/:$PYTHONPATH
Подробнее можно найти здесь.
Решение
Предполагая, что остальная часть вашей конфигурации верна, все, что вам нужно сделать, это сделать spark-csv
JAR доступен для вашей программы. Есть несколько способов достичь этого:
вручную скачать необходимые банки, включая
spark-csv
и анализатор CSV (напримерorg.apache.commons.commons-csv
) и положить их где -нибудь наCLASSPATH
.с использованием
--packages
Опция (используйте версию Scala, которая использовалась для построения искру. Предварительно построенные версии используйте 2.10):с использованием
PYSPARK_SUBMIT_ARGS
переменная окружающей среды:export PACKAGES="com.databricks:spark-csv_2.11:1.3.0" export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
добавление строки Gradle в
spark.jars.packages
вconf/spark-defaults.conf
:spark.jars.packages com.databricks:spark-csv_2.11:1.3.0
Другие советы
Используйте следующую процедуру на вашем Mac--
- vi to ~/.bash_profile (~/.zshrc, если вы находитесь в этом поезде)
- Вставьте следующую запись (обязательно укажите желаемую версию Spark-CSV)-
export PYSPARK_SUBMIT_ARGS="--packages com.databricks:spark-csv_2.11:1.3.0 $PYSPARK_SUBMIT_ARGS"
Оттуда запустите записную книжку Ipython и протестируйте с чем-то вроде этого ...
import pyspark as ps
from pyspark.sql import SQLContext
sc = ps.SparkContext()
input_csv = 'file:////PATH_TO_CSV_ON_LOCAL_FILESYSTEM'
df=sqlContext.read.load(input_csv,format='com.databricks.spark.csv', header='true', inferSchema='true')
df.dtypes # Returns the csv's schema breakdown with types