2017-01-27 3 views
0

Я не могу присоединиться правильно и получить результирующие столбцы и нужно получить мин() колонны после присоединенияСпарк Inner Регистрация и получить Min()

SELECT 
t.ad, 
t.DId, 
t.BY, 
t.BM, 
t.cid, 
MIN(p.PS) AS PS 
FROM 
    Tempity t inner join ples p 
    on t.cid = p.cid 
    and p.PType = t.TeO 
    AND p.pto = 'cccc' 
    AND p.cid = 2 
    GROUP BY t.aid 
    ,t.DId 
    ,t.BYear 
    ,t.BM 
    ,t.cid; 
I am converting above sql query as 
     val RS = Tempity.join(DF_LES,Tempity("cid") <=> DF_PLES("cid")&& DF_PLES("clientid") <=> 2 && Tempity("TO") <=> DF_LES("PType") && DF_LES("pto") <=> "cccc" ,"inner").select("aid","DId","BM","BY","TO","cid").groupBy(aid","DId","BM","BY")select("aid","DId","BM","BY","TO","cid").show 

Брус узнать, где я делаю неправильно Ошибка

org.apache.spark.sql.AnalysisException: Reference 'cid' is ambiguous, could be: cid#4058, cid#13063L.; 

ответ

0

Использование Tempity("cid") вместо cid, как это неоднозначное

import org.apache.spark.sql.functions._ //for min() 

val RS = Tempity.join(DF_LES, 
      Tempity("cid") <=> DF_PLES("cid") && 
      DF_PLES("clientid") <=> 2 && 
      Tempity("TO") <=> DF_PLES("PType") && 
      DF_PLES("pto") <=> "cccc", 
     "inner" 
    ) 
    .groupBy("a​id","DId","BM","BY", Tempity("cid"))‌​ 
    .agg(min(DF_PLES("PS"))) 

RS.show() 

Другой путь вы можете использовать же SQL на SparkSession

val spark: SparkSession = SparkSession.builder.master("local").getOrCreate; 

//create tables from DataFrames 
Tempity.createOrReplaceTempView("Tempity") 
DF_PLES.createOrReplaceTempView("ples") 

import spark.sql 

//Now run the same SQL 

sql(""" 
    SELECT t.ad, t.DId, t.BY, t.BM, t.cid, MIN(p.PS) AS PS 
     FROM Tempity t 
    INNER JOIN ples p 
     ON t.cid = p.cid AND p.PType = t.TeO AND p.pto = 'cccc' AND p.cid = 2 
    GROUP BY t.ad, t.DId, t.BY, t.BM, t.cid 
    """) 
+0

': 49: ошибка: значение выбора не является членом org.apache.spark.sql.RelationalGroupedDataset' – Anji

+0

Какой бросили эту ошибку? , Pls проверяет удаленную дополнительную цитату в многострочной строке. – mrsrinivas

+0

Ошибка генерируется для 'VAL RS = Tempity.join (DF_LES, Tempity ("чид") <=> DF_PLES ("чид") && DF_PLES ("ClientID") <=> 2 && Tempity ("TO") <=> DF_PLES ("PTYPE") && DF_PLES ("ВОМ") <=> "сссс", "внутренний" ) .groupBy ("A ID", "А", "BM", "на", Tempity ("чид ")) .agg (min (DF_PLES (" PS "))) ' Я хочу выполнять операции над DF вместо использования sql ("") – Anji

Смежные вопросы