Spark — библиотека Snappy недоступна

Я пытаюсь сохранить модель Mllib.

Код, который я запускал в Spark:

model = RandomForest.trainClassifier(train_data, 
                                 numClasses=2, categoricalFeaturesInfo=categoricalFeaturesInfo,
                                 numTrees=numTrees, featureSubsetStrategy="auto",
                                 impurity=impurity, maxDepth=maxDepth, maxBins=maxBins)

model.save(sc, "file:///path/to/models/model_name")

Сообщение об ошибке было:

native snappy library not available: 
this version of libhadoop was built without snappy support

Информация о Спарке

Спарк версия:

1.6.1

Код для запуска Spark:

pyspark --packages com.databricks:spark-csv_2.11:1.5.0 --master "local[8]" --driver-memory 6G --executor-memory 6G --jars /usr/local/path/to/hadoop/lib/snappy-java-1.0.4.1.jar

Переменные среды (spark_env.sh):

HADOOP_HOME=/usr/local/path/to/hadoop 
SPARK_HOME=/usr/local/path/to/spark
HADOOP_CONF_DIR=/usr/local/path/to/hadoop/etc/hadoop
SPARK_CONF_DIR=/usr/local/path/to/spark/conf
HADOOP_LZO_DIR=/usr/local/path/to/hadoop/lib
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/path/to/spark/*:/usr/local/path/to/spark/lib/*:/usr/local/path/to/hadoop/lib/*:/usr/local/path/to/hadoop/lib/native/*
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/path/to/hadoop/lib/native
SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/local/path/to/hadoop/lib/native/*:/usr/local/path/to/hadoop/lib/snappy-java-1.0.4.1.jar:/usr.local/path/to/spark/lib/*:$CLASSPATH

Я намеренно добавил /usr/local/path/to/hadoop/lib/snappy-java-1.0.4.1.jar в SPARK_CLASSPATH, но безрезультатно.


person FailedMathematician    schedule 10.03.2017    source источник


Ответы (1)


Следующие шаги помогли мне решить аналогичную проблему:

Загрузите библиотеку hadoop с https://hadoop.apache.org/releases.html, распакуйте ее. локально и установите spark.driver.extraLibraryPath в $HADOOP_PATH/lib/native.

Пример:

pyspark --packages com.databricks:spark-csv_2.11:1.5.0 --master "local[8]" --conf "spark.driver.extraLibraryPath=/home/hadoop/hadoop-2.8.1/lib/native" --driver-memory 6G --executor-memory 6G --jars /usr/local/path/to/hadoop/lib/snappy-java-1.0.4.1.jar

Вы можете попробовать установить spark.executor.extraLibraryPath на то же значение, если оно вам не подходит.

person Loki    schedule 29.08.2017