Динамическая загрузка com.databricks:spark-csv spark package в мое приложение

Мне нужно динамически загружать пакеты spark com.csv в мое приложение, используя spark submit, все работает

spark-submit --class "DataLoaderApp" --master yarn 
             --deploy-mode client 
             --packages com.databricks:spark-csv_2.11:1.4.0  target/scala-2.10/ra-etl_2.10-1.0.0.jar LOAD GGSN /data-sources/DXE_Ver/1_4/MTN_Abuja/GGSN/20160221/GGSN_0_20160221074731.dat

но когда я использую

spark-submit --class "DataLoaderApp" --master yarn 
             --deploy-mode client 
             target/scala-2.10/ra-etl_2.10-1.0.0.jar LOAD GGSN /data-sources/DXE_Ver/1_4/MTN_Abuja/GGSN/20160221/GGSN_0_20160221074731.dat

для приведенной ниже конфигурации это не работает...

val conf = new SparkConf()
                .setAppName("Data Loader Application")
                .set("spark.jar.packages","com.databricks:spark-csv_2.11:1.4.0")

1 ответ

С помощью spark-csv с помощью SparkConf кажется все еще открытым вопросом. Тем не менее, если ваша цель состоит в том, чтобы избавить от необходимости набирать --packages аргумент каждый раз, когда вы звоните spark-submit, вы можете добавить соответствующие зависимости в вашем spark-defaults.conf файл (обычно находится в вашем $SPARK_HOME/conf каталог) следующим образом:

  1. Найдите пути spark-csv_2.11-1.4.0.jar и его зависимости, commons-csv-1.1.jar а также univocity-parsers-1.5.1.jar, Они должны уже присутствовать в вашей системе, если вы уже использовали spark-csv один раз; в моем случае (пользователь ctsats) эти пути:

    /home/ctsats/.ivy2/cache/com.databricks/spark-csv_2.11/jars/spark-csv_2.11-1.4.0.jar
    /home/ctsats/.ivy2/cache/org.apache.commons/commons-csv/jars/commons-csv-1.1.jar
    /home/ctsats/.ivy2/cache/com.univocity/univocity-parsers/jars/univocity-parsers-1.5.1.jar
    
  2. открыто spark-defaults.conf файл (в $SPARK_HOME/conf - создайте его, если он не существует), и добавьте вышеуказанные пути с аргументом spark.driver.extraClassPathТо есть, если ваши пути такие же, как указано выше, добавьте следующую строку:

    spark.driver.extraClassPath /home/ctsats/.ivy2/cache/com.databricks/spark-csv_2.11/jars/spark-csv_2.11-1.4.0.jar:/home/ctsats/.ivy2/cache/org.apache.commons/commons-csv/jars/commons-csv-1.1.jar:/home/ctsats/.ivy2/cache/com.univocity/univocity-parsers/jars/univocity-parsers-1.5.1.jar
    

Теперь spark-csv пакет будет автоматически загружен при каждом вызове spark-submit или же spark-shell,

Пожалуйста, дайте мне знать, если это сработало для вас...

Другие вопросы по тегам