首页 > 解决方案 > Pyspark、groupBy 和嵌套列前缀

问题描述

在 pyspark 中,我尝试计算用户 ID 在 json 日志中的唯一出现次数(数据集是一个 json 文件)。

以下作品:

df.select(
        F.col("nested.user_id")
    )\
    .where(
        ...
    )\
    .groupBy(
        F.col("user_id")
    )\
    .count()

注意“嵌套”。前缀不会出现在 groupBy 子句中。它似乎被火花自动删除。我需要出现这个前缀并尝试了以下查询:

df.select(
        F.col("nested.user_id").alias("nested.user_id")
    )\
    .where(
        ...
    )\
    .groupBy(
        F.col("nested.user_id")
    )\
    .count()

别名似乎有效,但 groupBy 不知道:

org.apache.spark.sql.AnalysisException: cannot resolve '`nested.user_id`' given input columns: [nested.user_id];

任何想法?谢谢

标签: apache-sparkpyspark

解决方案


感谢@pault 的评论,这是答案:

df.select(
        F.col("nested.user_id").alias("nested.user_id")
    )\
    .where(
        ...
    )\
    .groupBy(
        F.col("`nested.user_id`")
    )\
    .count()

在 groupBy 子句中添加了反引号。


推荐阅读