Ошибка чтения MongoDB Spark Connector v10.x на Databricks 13.xPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка чтения MongoDB Spark Connector v10.x на Databricks 13.x

Сообщение Anonymous »

Обновить
Проблема была решена в Databricks Runtime 13.3 LTS.
Вопрос
Я столкнулся с ошибкой при попытке прочитать данные из любой коллекции MongoDB с помощью MongoDB Spark Connector v10.x в Databricks v13.x.

Приведенная ниже ошибка начинается со строки № 113 библиотеки соединителей MongoDB Spark (v10.2.0):

java.lang.NoSuchMethodError: org.apache.spark.sql.types.DataType.sameType(Lorg/apache/spark/sql/types/DataType;)Z -------------------------------------------------- ------------------------- Py4JJavaError Traceback (последний вызов последний) Файл :6 1 mongo_opts = {'connection.uri': conf.mongodb.read_uri, 2 «база данных»: «setorizacao», 3 «коллекция»: «розетка», 4 'outputExtendedJson': 'истина'} ----> 6 mongo_outl = spark.read.load(format='mongodb', **mongo_opts) Файл /databricks/spark/python/pyspark/instrumentation_utils.py:48 в _wrap_function..wrapper(*args, **kwargs) 46 начало = time.perf_counter() 47 попробуйте: ---> 48 res = func(*args, **kwargs) 49 logger.log_success( 50 имя_модуля, имя_класса, имя_функции, время.perf_counter() - начало, подпись 51 ) 52 возврата разрешения Файл /databricks/spark/python/pyspark/sql/readwriter.py:314 в DataFrameReader.load(self, путь, формат, схема, **параметры) 312 return self._df(self._jreader.load(self._spark._sc._jvm.PythonUtils.toSeq(путь))) 313 еще: --> 314 return self._df(self._jreader.load()) Файл /databricks/spark/python/lib/py4j-0.10.9.7-src.zip/py4j/java_gateway.py:1322, в JavaMember.__call__(self, *args) 1316 команда = proto.CALL_COMMAND_NAME +\ 1317 self.command_header +\ 1318 args_command +\ 1319 прототип.END_COMMAND_PART 1321 ответ = self.gateway_client.send_command(команда) -> 1322 return_value = get_return_value( 1323 ответ, self.gateway_client, self.target_id, self.name) 1325 для temp_arg в temp_args: 1326, если hasattr(temp_arg, "_detach"): Файл /databricks/spark/python/pyspark/errors/Exceptions/captured.py:188 в capture_sql_Exception..deco(*a, **kw) 186 def deco(*a: Любой, **kw: Любой) -> Любой: 187 попробуйте: --> 188 return f(*a, **kw) 189, кроме Py4JJavaError как e: 190 преобразовано = Convert_Exception (e.java_Exception) Файл /databricks/spark/python/lib/py4j-0.10.9.7-src.zip/py4j/protocol.py:326, в get_return_value(ответ, шлюз_клиент, target_id, имя) Значение 324 = OUTPUT_CONVERTER[тип](ответ[2:], шлюз_клиент) 325, если ответ[1] == REFERENCE_TYPE: --> 326 поднять Py4JJavaError( 327 "Произошла ошибка при вызове {0}{1}{2}.\n". Формат 328(target_id, ".", имя), значение) 329 еще: 330 поднять Py4JError( 331 "Произошла ошибка при вызове {0}{1}{2}. Трассировка:\n{3}\n". Формат 332(target_id, ".", имя, значение)) Py4JJavaError: произошла ошибка при вызове o1020.load. : java.lang.NoSuchMethodError: org.apache.spark.sql.types.DataType.sameType(Lorg/apache/spark/sql/types/DataType;)Z в com.mongodb.spark.sql.connector.schema.InferSchema.lambda$inferSchema$4(InferSchema.java:103) в java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) в java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) в java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) в java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) в java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) в java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) в java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566) в com.mongodb.spark.sql.connector.schema.InferSchema.inferSchema(InferSchema.java:112) в com.mongodb.spark.sql.connector.schema.InferSchema.inferSchema(InferSchema.java:78) в com.mongodb.spark.sql.connector.MongoTableProvider.inferSchema(MongoTableProvider.java:60) в org.apache.spark.sql.execution.datasources.v2.DataSourceV2Utils$.getTableFromProvider(DataSourceV2Utils.scala:91) в org.apache.spark.sql.execution.datasources.v2.DataSourceV2Utils$.loadV2Source(DataSourceV2Utils.scala:138) в org.apache.spark.sql.DataFrameReader.$anonfun$load$1(DataFrameReader.scala:333) в scala.Option.flatMap(Option.scala:271) в org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:331) в org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:226) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) в py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:397) в py4j.Gateway.invoke(Gateway.java:306) в py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) в py4j.commands.CallCommand.execute(CallCommand.java:79) в py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:195) в py4j.ClientServerConnection.run(ClientServerConnection.java:115) в java.lang.Thread.run(Thread.java:750) Я протестировал все версии Spark Connector от 10.1.0 до 10.2.0. Я также тестировал версии 5 и 6 MongoDB Server (Atlas).

Я протестировал все версии Databricks 13, от 13.0 до 13.2. Ошибка не возникает в Databricks 12.2 и более ранних версиях.

На данный момент я использую библиотеку с координатами репозитория Maven org.mongodb.spark:mongo-spark-connector_2.12:10.2.0, но ранее я также использовал официальный файл jar доступен по этой ссылке.

Использование Spark Connector версии 3.0.2 хорошо подходит для операций чтения и записи. Операции записи также отлично работают в версиях 10.x Spark Connector.

Я пытался прочитать данные тех же коллекций MongoDB в локальной настройке Spark, и это сработало нормально. Для этого я использовал версии ниже:
[*]Искра 3.4.1; [*]Java 11.0.19 (Азул Зулу); и [*]Python 3.10.6 (для PySpark). Конфигурация для воспроизведения ошибки: [*]
Среда выполнения Databricks: 13.2 (Apache Spark 3.4.0, Scala 2.12, Python 3.10.6)
[*]
Коннектор MongoDB Spark: 10.2.0 (Scala 2.12)

Координаты Maven: org.mongodb.spark:mongo-spark-connector_2.12:10.2.0
[*]
MongoDB: уровень бесплатного пользования Atlas (серверная версия 6).

Я хочу выполнять операции чтения и записи с помощью MongoDB Spark Connector версии 10, работающего на Databricks 13.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»