Я вижу, что вы следовали моему предыдущему ответу, используя старый Python SDK для DocumentDB для запроса документов CosmosDB для создания объекта PySpark DataFrame.Но вы не можете напрямую передать результат docs
из метода client.ReadDocuments
в качестве параметра data
в функцию SparkSession.createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)
, поскольку типы данных отличаются, как показано ниже.
Для функции createDataFrame
требуется параметр data
, который должен быть RDD
или list
или pandas.DataFrame
Однако,Я скачал исходные коды pydocumentdb-2.3.3.tar.gz
из https://pypi.org/project/pydocumentdb/#files и просмотрел файлы кодов document_client.py
& query_iterable.py
.
# from document_client.py
def ReadDocuments(self, collection_link, feed_options=None):
"""Reads all documents in a collection.
:param str collection_link:
The link to the document collection.
:param dict feed_options:
:return:
Query Iterable of Documents.
:rtype:
query_iterable.QueryIterable
"""
if feed_options is None:
feed_options = {}
return self.QueryDocuments(collection_link, None, feed_options)
# query_iterable.py
class QueryIterable(object):
"""Represents an iterable object of the query results.
QueryIterable is a wrapper for query execution context.
"""
Итак, чтобы исправить вашу проблему,сначала нужно создать объект pandas.DataFrame
, повторив результат Query Iterable of Documents
из метода ReadDocuments
, а затем создать объект PySpark DataFrame с помощью spark.createDataFrame(pandas_df)
.