Я пытаюсь вставить более одной строки в фрейм данных в pyspark. Это мой код:
Сначала я импортирую пакеты:
import pydocumentdb
from pydocumentdb import document_client
from pydocumentdb import documents
Затем я определяю соединение Policy:
connectionPolicy = documents.ConnectionPolicy()
connectionPolicy.EnableEndpointDiscovery
connectionPolicy.PreferredLocations = {"Western Europe"}
Полномочия:
masterKey = 'yourmasterkey'
host = 'https://testcosmosdbasdada.documents.azure.com:443/'
client = document_client.DocumentClient(host,{'masterKey': masterKey}, connectionPolicy)
Затем я определяю имя базы данных и коллекции:
databaseId = 'pruebadb'
collectionId = 'collection1'
dbLink = 'dbs/' + databaseId
collLink = dbLink + '/colls/' + collectionId
Примечание. Мне нужно создать базу данных и коллекцию с этими именами в наборе Azure.
Тогда я могу использовать либо CreateDocument, либо UpsertDocument. Я собираюсь использовать UpsertDocument.
client.UpsertDocument(collLink,{'attribute1': 4}, options=None)
Это работает! Как вы видите в документации:
https://docs.microsoft.com/en-us/python/api/pydocumentdb/pydocumentdb.document_client.documentclient?view=azure-python#upsertdocument
Однако я не знаю, как вставить несколько строк одновременно. Эти доказательства не работают:
1)
client.UpsertDocument(collLink,[{'attribute1': 4},{'attribute1': 2}], options=None)
Объект 'list' не имеет атрибута 'get'
2)
client.UpsertDocument(collLink,[{'attribute1': 4},{'attribute1': 2}], options=None)
Объект 'list' не имеет атрибута 'get'
3)
df = spark.read.csv('/FileStore/tables/points.csv', sep=';', header=True)
client.UpsertDocument(collLink, df, options=None)
Объект 'list' не имеет атрибута 'get'
Эти доказательства не работают, потому что мне нужен dict в качестве второго аргумента UpsertDocument ().
Есть какая-нибудь функция pydocumentdb или другой библиотеки python для этого?
Каков наилучший метод производительности для вставки данных из блока данных в CosmosDB с помощью pyspark?