scala - SKEW 连接提示的 Spark Scala 等价物

标签 scala apache-spark

Spark SQL 有一个可用的倾斜提示(请参阅 here)。是否有适用于 Spark Scala 的等效提示?

例子 这是事实表倾斜 ProductId 列的 Spark SQL 代码:

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 has a skew hint available

事实并非如此。 Databricks 平台有,但它是专有扩展(与索引相同),在 Spark 中不可用。

I'm just unable finding syntax for the skew hint.

在一般情况下,查询计划提示是使用 hint 方法传递的,可以像这样使用

val hint: String = ???
inFact.join(inPMst.hint(hint),  Seq("ProductId")))

关于scala - SKEW 连接提示的 Spark Scala 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880616/

相关文章:

scala - 2.10 中 scala 有何变化?

scala - 具有条件计数的 Pivot scala 数据框

java - 如何在 Apache Spark 中执行简单的reduceByKey?

scala - 如何将 Spark DataFrame 以 csv 格式保存在磁盘上?

scala - 如何传递 Scala UserDefinedFunction 其中输出是复杂类型(使用 StructType 和 StructField)以从 Pyspark 使用

scala - 为什么使用 Foo[T < : Bar] require Foo[_ <: Bar] rather than Foo[_]

python - 检查值是否在 pyspark 的间隔内

linux - 使用 spark-shell : error: not found: value spark 启动 spark 时出现异常

apache-spark - Spark Mllib kmeans 示例,使用数据框而不是 textFile

scala - 具有最大位数的字符串格式