Невозможно импортировать пакеты cosmosDB в spark-shell - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь загрузить некоторые данные из фрейма данных в azure cosmosDB.

Я скачал следующие файлы jar и добавил в свою локальную папку вместе с eventHub_Jars.

azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar
azure-cosmosdb-2.0.0.jar
azure-documentdb-1.16.4.jar
documentdb-bulkexecutor-2.4.1.jar

Ниже приведен сценарий, который я использовал для открытия работающего сценария оболочки.

shell-script --master local --jars eventHub_Jars/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

Когда я использую сценарий оболочки вместе с банками EventHub или другими банками как

spark-shell --master local --packages com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.13 --jars eventHub_Jars/scala-library-2.11.12.jar, azure-eventhubs-spark_2.11-2.3.2.jar, azure-eventhubs-1.0.2.jar, proton-j-0.25.0.jar, scala-java8-compat_2.11-0.9.0.jar, slf4j-api-1.7.25.jar, azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

Сценарий оболочки открывается Но когда я пытаюсь импортировать

import com.microsoft.azure.cosmosdb.spark.config.Config

, он выдает следующую ошибку

error: object cosmosdb is not a member of package com.microsoft.azure
       import com.microsoft.azure.cosmosdb.spark.config.Config

, что может быть причиной вышеуказанной ошибки. ? Есть ли проблема с синтаксисом? Кажется, работает только первая добавленная банка. Если мы попытаемся импортировать какой-либо пакет из любого другого jar-файла, он выдаст вышеуказанную ошибку!

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Когда я попытался это сделать, у меня возникла проблема с параметром --jars, использующим относительный путь для извлечения файлов JAR, если только я не добавил «file: ///» в начало пути, где я сохранил файлы JAR. Например, если файл jar был расположен в /usr/local/spark/jars_added/ (созданная мной папка), для параметра --jars необходимо указать путь file:///usr/local/spark/jars_added/*.jar, где "*" представляет имя вашего jar.

Следующий выигранный файл 'Однако на вашем компьютере это не то же самое, но у вас есть идея указать файлы JAR.

spark-shell 
--master local 
--packages com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.13 
--jars file:///usr/local/spark/jars_added/eventHub_Jars/scala-library-2.11.12.jar, 
file:///usr/local/spark/jars_added/azure-eventhubs-spark_2.11-2.3.2.jar, 
file:///usr/local/spark/jars_added/azure-eventhubs-1.0.2.jar, 
file:///usr/local/spark/jars_added/proton-j-0.25.0.jar, 
file:///usr/local/spark/jars_added/scala-java8-compat_2.11-0.9.0.jar, 
file:///usr/local/spark/jars_added/slf4j-api-1.7.25.jar, 
file:///usr/local/spark/jars_added/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

В качестве альтернативы вы можете скопировать файлы JAR в папку по умолчанию, где файлы JAR извлекаются для каждого сеанса зажигания. (обратите внимание, что если у вас есть папка jars в $SPARK_HOME, это заменит местоположение по умолчанию. В случае, если читатели не уверены, что $SPARK_HOME скорее всего будет равно /usr/local/spark). Например, на моей машине банки извлекаются из /usr/local/spark/assembly/target/scala-2.11/jars по умолчанию.

0 голосов
/ 18 октября 2019

Работает, когда я указываю полный путь для каждой банки после --jars

spark-shell --master local --packages com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.13 --jars eventHub_Jars/scala-library-2.11.12.jar,eventHub_Jars/azure-eventhubs-spark_2.11-2.3.2.jar,eventHub_Jars/azure-eventhubs-1.0.2.jar,eventHub_Jars/proton-j-0.25.0.jar,eventHub_Jars/scala-java8-compat_2.11-0.9.0.jar,eventHub_Jars/slf4j-api-1.7.25.jar,eventHub_Jars/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar
...