Как подключить блоки данных Azure к базе данных Cosmos DB с помощью API MongoDB? - PullRequest
0 голосов
/ 28 ноября 2018

Я создал одну учетную запись Azure CosmosDB, используя MongoDB API.Мне нужно подключить CosmosDB (API MongoDB) к кластеру Azure Databricks для чтения и записи данных из космоса.

Как подключить кластер Azure Databricks к учетной записи CosmosDB?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

После добавления пакета org.mongodb.spark:mongo-spark-connector_2.11:2.4.0 это сработало для меня:

import json

query = {
  '$limit': 100,
}

query_config = {
  'uri': 'myConnectionString'
  'database': 'myDatabase',
  'collection': 'myCollection',
  'pipeline': json.dumps(query),
}

df = spark.read.format("com.mongodb.spark.sql") \
  .options(**query_config) \
  .load()

Однако я получаю эту ошибку с некоторыми коллекциями:

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 4, 10.139.64.6, executor 0): com.mongodb.MongoInternalException: The reply message length 10168676 is less than the maximum message length 4194304
0 голосов
/ 22 января 2019

Вот фрагмент кода pyspark, который я использую для подключения к базе данных CosmosDB с использованием MongoDB API из Azure Databricks (5.2 ML Beta (включает Apache Spark 2.4.0, Scala 2.11) и соединителя MongoDB: org.mongodb.spark: mongo-spark-connector_2.11: 2.4.0):

from pyspark.sql import SparkSession

my_spark = SparkSession \
    .builder \
    .appName("myApp") \
    .getOrCreate()

df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource") \
  .option("uri", CONNECTION_STRING) \
  .load()

С CONNECTION_STRING, который выглядит следующим образом: "mongodb: // ИМЯ ПОЛЬЗОВАТЕЛЯ: PASSWORD@testgp.documents.azure.com: 10255 / DATABASE_NAME.COLLECTION_NAME ? Ssl = true & replicaSet = globaldb "

Я пробовал множество других вариантов (добавление имен баз данных и коллекций в качестве опции или конфигурации SparkSession) без успеха.Скажите, работает ли он у вас ...

...