Эквивалент Spark Scala для советов SKEW - PullRequest
0 голосов
/ 18 октября 2018

В 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")

Я просто не могу найти синтаксис для наклонной подсказки.

1 Ответ

0 голосов
/ 18 октября 2018

В Spark SQL имеется подсказка о перекосе

Нет.Платформа Databricks имеет, но это проприетарное расширение (такое же, как индексирование), недоступное в Spark как таковое.

Я просто не могу найти синтаксис для подсказки перекоса.

В общем случае подсказки плана запроса передаются с использованием метода hint, который можно использовать следующим образом:

val hint: String = ???
inFact.join(inPMst.hint(hint),  Seq("ProductId")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...