2017-08-28 65 views
1

要删除重复的行,我尝试这个SQL如何解决这个火花斯卡拉SQL错误消息

val characters = MongoSpark.load[sparkSQL.Character](sparkSession) 
characters.createOrReplaceTempView("characters") 
val testsql = sparkSession.select("SELECT * FROM characters GROUP BY title") 
testsql.show() 

但此SQL使此错误消息。 如果你知道这个问题,请回答这个问题。

感谢您

Parsing command: SELECT * FROM characters GROUP BY title 
Exception in thread "main" org.spache.spark.sql.AnalysisException: 
expression 'characters.`url`' is neither present in the group by, nor is it an aggregate function 
Add to Add to group by or wrap in first() if you don't care which value you get.;; 

,然后我试图这样,但我不知道这是正确的解决方案....

请回答这个问题。谢谢!

val characters = MongoSpark.load[sparkSQL.Character](sparkSession) 
characters.createOrReplaceTempView("characters") 
val testsql = sparkSession.select("SELECT * FROM characters") 
testgrsql = testsql.groupBy("title") 
testgrsql.show() 
+0

SELECT colums'VAL testsql = sparkSession.sql(“选择从标题字符GROUP BY称号“)',如果你没有使用任何聚合函数。 – mrsrinivas

+0

嗨,如果下面的答案已经解决了您的问题,请考虑[接受它](http://meta.stackexchange.com/q/5234/179419)或添加您自己的解决方案。所以,这表明你已经找到了解决方案。 – mrsrinivas

回答

1

错误消息说明了一切,

解析命令:SELECT * FROM字符GROUP BY标题

异常线程 “main” org.spache.spark.sql.AnalysisException: 表达式'characters.url'既不存在于组中,也不是聚合函数

如果您不在意您得到的是什么价值,请将其添加到群组或由第一个()包装。

所以使用就可以了,如果你想第一个URL价值为每个标题,然后在first(url) GROUPBY提到

characters.createOrReplaceTempView("characters") 
val testsql = sparkSession.sql("SELECT title, first(url) FROM characters GROUP BY title")