scala - SKEW 连接提示的 Spark Scala 等效项
问题描述
Spark SQL 有一个可用的倾斜提示(请参阅此处)。Spark Scala 是否有等效的提示?
示例 这是 Spark SQL 代码,其中事实表倾斜了 ProductId 列:
SELECT /*+ SKEW('viewFact', 'ProductId') */
RevSumDivisionName, RevSumCategoryName, CloudAddOnFlag,
SUM(ActualRevenueAmt) AS RevenueUSD, COUNT(*) AS Cnt
FROM viewFact
INNER JOIN viewPMST ON viewFact.ProductId = viewPMST.ProductId
INNER JOIN viewRsDf ON viewPMST.ProductFamilyId = viewRsDf.ProductFamilyId
INNER JOIN viewRevH ON viewRsDf.RevSumCategoryId = viewRevH.RevSumCategoryId
GROUP BY RevSumDivisionName, RevSumCategoryName, CloudAddOnFlag
Scala 中的相同连接:
inFact
.join(inPMst, Seq("ProductId"))
.join(inRsDf, Seq("ProductFamilyId"))
.join(inRevH, Seq("RevSumCategoryId"))
.groupBy($"RevSumDivisionName", $"RevSumCategoryName", $"CloudAddOnFlag")
.agg(sum($"ActualRevenueAmt") as "RevenueUSD", count($"*") as "Cnt")
我只是找不到倾斜提示的语法。
解决方案
Spark SQL 有一个可用的倾斜提示
它不是。Databricks 平台有,但它是 Spark 本身不可用的专有扩展(与索引相同)。
我只是找不到倾斜提示的语法。
hint
在一般情况下,查询计划提示使用可以像这样使用的方法传递
val hint: String = ???
inFact.join(inPMst.hint(hint), Seq("ProductId")))
推荐阅读
- uidocument - 内置操作 UIDocumentBrowserViewController
- java - AndroidJavaException:java.lang.ClassNotFoundException:com.google.android.gms.ads.MobileAds
- c# - 使用 EF Core 中的 Database.ExecuteSqlCommand 从 MySql 存储过程中读取输出参数
- java - 使用 Locale 格式化 LocalDateTime 实例时获取 java.time.DateTimeException
- javascript - 我想在 javascript 中点击后初始化 App.init()
- android - Unresolved DataBinding dependency after latest Android Studio Update 3.3.2
- google-visualization - 将 Google Reporting API 标头用于可视化数据表标头的正确方法
- laravel - Laravel 5.8 如何在 foreach 中按数据透视表值的总和排序?
- php - PHP数组拆分为多个数组
- android - ProjectLayout.directoryProperty() 方法已被弃用