gpt4 book ai didi

python - 如何读取 Databricks 中的 Azure CosmosDb 集合并写入 Spark DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:16 24 4
gpt4 key购买 nike

我正在查询 CosmosDb 集合,并且能够打印结果。当我尝试将结果存储到 Spark DataFrame 时,它​​失败了。

引用此网站作为示例:

How to read data from Azure's CosmosDB in python

按照上述链接中的具体步骤进行操作。此外,尝试以下操作

 df = spark.createDataFrame(dataset)

这会引发此错误:

ValueError: Some of types cannot be determined after inferring

ValueError Traceback (most recent call last)
in ()
25 print (dataset)
26
---> 27 df = spark.createDataFrame(dataset)
28 df.show()
29

/databricks/spark/python/pyspark/sql/session.py in createDataFrame(self, data, schema, samplingRatio, verifySchema)
808 rdd, schema = self._createFromRDD(data.map(prepare), schema, samplingRatio)
809 else:
--> 810 rdd, schema = self._createFromLocal(map(prepare, data), schema)
811 jrdd = self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd())
812 jdf = self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(), schema.json())

/databricks/spark/python/pyspark/sql/session.py in _createFromLocal(self, data, schema)
440 write temp files.
441 """
--> 442 data, schema = self._wrap_data_schema(data, schema)
443 return self._sc.parallelize(data), schema

但是,希望将其保存为 Spark DataFrame

任何帮助将不胜感激。谢谢!!!>

最佳答案

为了推断字段类型,PySpark 会查看每个字段中的非无记录。如果字段只有 None 记录,PySpark 无法推断类型并会引发该错误。

手动定义架构将解决该问题

>>> from pyspark.sql.types import StructType, StructField, StringType
>>> schema = StructType([StructField("foo", StringType(), True)])
>>> df = spark.createDataFrame([[None]], schema=schema)
>>> df.show()
+----+
|foo |
+----+
|null|
+----+

希望有帮助。

关于python - 如何读取 Databricks 中的 Azure CosmosDb 集合并写入 Spark DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com