Pyspark,groupBy和嵌套列前缀

时间:2019-06-11 22:07:37

标签: apache-spark pyspark

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

以下作品:

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];

有什么主意吗?谢谢

1 个答案:

答案 0 :(得分:0)

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

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

反引号已添加到groupBy子句中。