Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Spark SQL';s 齐柏林飞艇0.6 火花1.6 SQL_Sql_Apache Spark_Apache Spark Sql_Apache Zeppelin_Apache Spark 1.6 - Fatal编程技术网

如何在Spark SQL';s 齐柏林飞艇0.6 火花1.6 SQL

如何在Spark SQL';s 齐柏林飞艇0.6 火花1.6 SQL,sql,apache-spark,apache-spark-sql,apache-zeppelin,apache-spark-1.6,Sql,Apache Spark,Apache Spark Sql,Apache Zeppelin,Apache Spark 1.6,我试图在一些推文中找到出现频率最高的20个词filtered包含每条tweet的单词数组。以下是: select explode(filtered) AS words from tweettable 按照您的期望列出每个单词,但我希望得到所有推文中每个单词的计数,然后显示其中前20个。以下操作可以正常工作,但我需要在SQL中执行此操作: df.select(explode($"filtered").as("value")) .groupBy("value") .count() .

我试图在一些推文中找到出现频率最高的20个词
filtered
包含每条tweet的单词数组。以下是:

select explode(filtered) AS words from tweettable 
按照您的期望列出每个单词,但我希望得到所有推文中每个单词的计数,然后显示其中前20个。以下操作可以正常工作,但我需要在SQL中执行此操作:

df.select(explode($"filtered").as("value"))
  .groupBy("value")
  .count()
  .sort(desc("count"))
  .show(20, false)

我在
单词
过滤
分解(过滤)
上尝试了
分组,但都出现了错误。

您可以在
FROM
语句中使用
子查询

SELECT value, count(*) AS count
FROM (SELECT explode(filtered) AS value
      FROM tweettable) AS temp
GROUP BY value
ORDER BY count DESC

下面的代码将为您提供实现预期目标的完整想法。火花试验(1.6)

或者,您可以使用窗口功能

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
import hiveContext.implicits._

val lst = List(Seq("Hello","Hyd","Hello","Mumbai"),Seq("Hello","Mumbai"),Seq("Hello","Delhi","Hello","Banglore"))
case class Tweets(filtered: Seq[String])
val df = sc.parallelize(lst).map(x=>Tweets(x)).toDF 

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
val w = org.apache.spark.sql.expressions.Window.orderBy('cnt.desc)

df.select(explode($"filtered").as("value")).groupBy("value").agg(count("*").alias("cnt")).withColumn("filteredrank", rank.over(w)).filter(col("filteredrank") <= 20).show()
val hiveContext=new org.apache.spark.sql.hive.hiveContext(sc)
导入hiveContext.implicits_
val lst=列表(顺序(“你好”、“海德”、“你好”、“孟买”)、顺序(“你好”、“孟买”)、顺序(“你好”、“德里”、“你好”、“班格罗”))
案例类推文(过滤:Seq[String])
val df=sc.parallelize(lst).map(x=>Tweets(x)).toDF
导入org.apache.spark.sql.expressions.Window
导入org.apache.spark.sql.functions_
val w=org.apache.spark.sql.expressions.Window.orderBy('cnt.desc)

df.select(explode($“filtered”).as(“value”).groupBy(“value”).agg(count(“*”).alias(“cnt”)).withColumn(“filteredawed”,rank.over(w)).filter(col(“filteredawed”)Thansk Arvind。接受了mtoto的建议进行升级,我成功地破坏了我的一半群集。如果我能修复它,我会尝试你的解决方案。没有问题。两种解决方案都适用于Spark 2.1版本。@schoon我也更新了适用于1.6版本的解决方案。但是更新仍然是一个好主意。@mtoto是的,我曾计划这样做一段时间,但现在我已经放弃了抚摸我的群集!!你为什么要更改标题?现在没有意义了。
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
import hiveContext.implicits._

val lst = List(Seq("Hello","Hyd","Hello","Mumbai"),Seq("Hello","Mumbai"),Seq("Hello","Delhi","Hello","Banglore"))
case class Tweets(filtered: Seq[String])
val df = sc.parallelize(lst).map(x=>Tweets(x)).toDF 

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
val w = org.apache.spark.sql.expressions.Window.orderBy('cnt.desc)

df.select(explode($"filtered").as("value")).groupBy("value").agg(count("*").alias("cnt")).withColumn("filteredrank", rank.over(w)).filter(col("filteredrank") <= 20).show()