【发布时间】:2022-09-17 05:13:25
【问题描述】:
我正在运行如下查询:
SELECT c.Name, count(c.Enabled) as Redeemed
FROM c
WHERE NOT IS_NULL(c.Enabled)
AND c.Name NOT IN (\'EXAMPLE1\', \'EXAMPLE2\')
GROUP BY c.Name
在具有 5000 万条记录的 cosmos DB 表(使用 spark.cosmos.read 和 customQuery)上,它在 0.05 秒内返回一行。在执行查询后,在大型 Pyspark 集群上运行的相同查询在操作 if not df.rdd.isEmpty() 上需要一个多小时。
这只是 pyspark 的本质,还是我以低效的方式进行查询?我是否应该不使用自定义查询,而是过滤数据框?
编辑:我不完全确定为什么,但是将 Restrictive 的分区策略添加到查询选项使这下降到几秒钟。
-
欢迎!了解有关您在 pyspark 中运行的内容的更多详细信息会很有帮助。例如:您是否通过 spark 连接器查询 Cosmos DB?或者这些数据是否像数据湖一样存在于其他地方?请编辑以澄清。
-
你能详细说明一下吗\"执行查询后\"?另外,您是如何创建
df的?这可能是df = spark.sql(...)吗?
标签: pyspark apache-spark-sql azure-cosmosdb azure-cosmosdb-sqlapi