2017-01-25 1 views
0

У меня есть SQL-запрос, который я хочу, чтобы преобразовать в искровым ScalaПреобразование Sql запрос искры

SELECT aid,DId,BM,BY 
FROM (SELECT DISTINCT aid,DId,BM,BY,TO FROM SU WHERE cd =2) t 
GROUP BY aid,DId,BM,BY HAVING COUNT(*) >1; 

SU мой кадр данных. Я сделал это

sqlContext.sql(""" 
    SELECT aid,DId,BM,BY 
    FROM (SELECT DISTINCT aid,DId,BM,BY,TO FROM SU WHERE cd =2) t 
    GROUP BY aid,DId,BM,BY HAVING COUNT(*) >1 
""") 

Вместо того, что мне это нужно в использовании моего dataframe

+0

показать, что вы пробовали до сих пор –

+0

если SU это ваше dataframe, чтобы использовать так, как вы упомянули сначала, вам необходимо зарегистрировать его как временную таблицу SU.registerTempTable ("table_name") и использовать это имя таблицы в своем запросе. –

+0

@RaphaelRoth 'val GP = SU.groupBy (« помощь »,« DId »,« BM »,« BY »). Agg (countDistinct (« помощь »,« DId »,« BM »,« BY »,« TO ") .alias (" count ")> 1) .show'. Был зарегистрирован как временная таблица, но я не хочу использовать SQL-запрос – Anji

ответ

1

Это должно быть DataFrame эквивалент:

SU.filter($"cd" === 2) 
    .select("aid","DId","BM","BY","TO") 
    .distinct() 
    .groupBy("aid","DId","BM","BY") 
    .count() 
    .filter($"count" > 1) 
    .select("aid","DId","BM","BY") 
+0

Спасибо, что он отлично работал ... Но запрос занимает много времени, чтобы выполнить – Anji