【问题标题】:Spark SQL query: org.apache.spark.sql.AnalysisExceptionSpark SQL 查询:org.apache.spark.sql.AnalysisException
【发布时间】:2015-08-12 14:37:57
【问题描述】:

我正在尝试为 twitter json 文件编写查询,以通过查看 retweetCount 来提取最有影响力的人。我需要按用户、他们的时区和转推数按降序对我的输出进行分组。 当我运行下面的查询时,我不断收到异常:

org.apache.spark.sql.AnalysisExceptionorg.apache.spark.sql.AnalysisException: 无法解析给定输入列的“total_retweets” t.retweeted_screen_name, t.tz, total_retweets, tweet_count;

sqlContext.sql("""
    SELECT
     t.retweeted_screen_name,
         t.tz,
     sum(retweets) AS total_retweets,
     count(*) AS tweet_count
    FROM (SELECT
            actor.displayName as retweeted_screen_name,
            body,
        actor.twitterTimeZone as tz,
            max(retweetCount) as retweets
          FROM tweetTable WHERE body <> ''
          GROUP BY actor.displayName, actor.twitterTimeZone,
                   body) t
    GROUP BY t.retweeted_screen_name, t.tz
    ORDER BY total_retweets DESC
    LIMIT 10 """).collect.foreach(println)

当我尝试简化此查询时,我遇到了如下错误:

total_retweets 列在选择列表中无效,因为它不是 包含在聚合函数或 GROUP BY 子句中。

非常感谢任何帮助。

【问题讨论】:

    标签: apache-spark-sql


    【解决方案1】:

    当您运行 SQL 查询时,它不会计算解析每个查询的别名,直到 WHEREJOINGROUP BYORDER BY 子句运行之后(但它会在任何 @ 987654325@ 子句)。因此你不能ORDER BYtotal_retweets,你需要订购sum(retweets)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2018-11-20
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多