【发布时间】:2018-11-06 16:53:02
【问题描述】:
我尝试通过在 spark-shell 中设置属性来启用 Spark cbo
spark.conf.set("spark.sql.cbo.enabled", true)
我现在正在运行spark.sql("ANALYZE TABLE events COMPUTE STATISTICS").show
运行此查询不会显示任何统计信息spark.sql("select * from events where eventID=1").explain(true)
在 Spark 2.2.1 上运行它
scala> spark.sql("select * from events where eventID=1").explain()
== Physical Plan ==
*Project [buyDetails.capacity#923, buyDetails.clearingNumber#924, buyDetails.leavesQty#925L, buyDetails.liquidityCode#926, buyDetails.orderID#927, buyDetails.side#928, cancelQty#929L, capacity#930, clearingNumber#931, contraClearingNumber#932, desiredLeavesQty#933L, displayPrice#934, displayQty#935L, eventID#936, eventTimestamp#937L, exchange#938, executionCodes#939, fillID#940, handlingInstructions#941, initiator#942, leavesQty#943L, nbbPrice#944, nbbQty#945L, nboPrice#946, ... 29 more fields]
+- *Filter (isnotnull(eventID#936) && (cast(eventID#936 as int) = 1))
+- *FileScan parquet default.events[buyDetails.capacity#923,buyDetails.clearingNumber#924,buyDetails.leavesQty#925L,buyDetails.liquidityCode#926,buyDetails.orderID#927,buyDetails.side#928,cancelQty#929L,capacity#930,clearingNumber#931,contraClearingNumber#932,desiredLeavesQty#933L,displayPrice#934,displayQty#935L,eventID#936,eventTimestamp#937L,exchange#938,executionCodes#939,fillID#940,handlingInstructions#941,initiator#942,leavesQty#943L,nbbPrice#944,nbbQty#945L,nboPrice#946,... 29 more fields] Batched: true, Format: Parquet, Location: InMemoryFileIndex[file:/home/asehgal/data/events], PartitionFilters: [], PushedFilters: [IsNotNull(eventID)], ReadSchema: struct<buyDetails.capacity:string,buyDetails.clearingNumber:string,buyDetails.leavesQty:bigint,bu...
【问题讨论】:
-
不知道你有没有看到实物计划中的统计数据,你从哪里得到这些信息的?
-
我浏览了 Apache Spark docs.azuredatabricks.net/spark/latest/spark-sql/cbo.html 和 databricks.com/blog/2017/08/31/… 的文档
-
尝试使用 spark 2.3,查询计划中也没有统计信息(也没有在 Spark UI 中)
标签: apache-spark apache-spark-sql databricks