Apache spark TypeError dropDuplicates()接受1到2个位置参数,但给出了3个

Apache spark TypeError dropDuplicates()接受1到2个位置参数,但给出了3个,apache-spark,pyspark,spark-structured-streaming,Apache Spark,Pyspark,Spark Structured Streaming,我在Spark 2中播放流媒体数据 我想用dropDuplicates方法复制记录 我在Spark网站上发现,我可以将dropDuplicates与水印一起使用 这是我的带有水印的代码,不带dropDuplicates方法: parsed = parsed_opc \ .withWatermark("sourceTimeStamp", "10 minutes") \ .groupBy( window(parsed_opc.sourceTimeStamp, "4 s

我在Spark 2中播放流媒体数据

我想用dropDuplicates方法复制记录

我在Spark网站上发现,我可以将
dropDuplicates
水印一起使用

这是我的带有水印的代码,不带
dropDuplicates
方法:

parsed = parsed_opc \
    .withWatermark("sourceTimeStamp", "10 minutes") \
    .groupBy(
        window(parsed_opc.sourceTimeStamp, "4 seconds"),
        parsed_opc.id
    ) \
    .agg({"value": "avg"}) \
    .withColumnRenamed("avg(value)", "avg")\
    .orderBy("avg", ascending=True)
这个代码有效。但是,我想像这样添加
dropDuplicates

parsed = parsed_opc \
    .withWatermark("sourceTimeStamp", "10 minutes") \
    .dropDuplicates("id", "sourceTimeStamp") \
    .groupBy(
        window(parsed_opc.sourceTimeStamp, "4 seconds"),
        parsed_opc.id
    ) \
    .agg({"value": "avg"}) \
    .withColumnRenamed("avg(value)", "avg")\
    .orderBy("avg", ascending=True)
它抛出一个错误:
TypeError:dropDuplicates()接受1到2个位置参数,但给出了3个

我不明白为什么会出现这种错误。这种用法在Spark站点中也有类似的用法。
此错误的原因是什么?

您需要在
dropDuplicates()
方法中使用括号声明多个列

像这样:

parsed=parsed\u opc\
.withWatermark(“源时间戳”,“10分钟”)\
.dropDuplicates([“id”,“sourceTimeStamp”])\
.群比(
窗口(解析的opc.sourceTimeStamp,“4秒”),
解析的opc.id
) \
.agg({“值”:“平均值”})\
.WithColumnRename(“平均值)”,“平均值”)\
.orderBy(“平均值”,升序=真)

dropDuplicates()
方法中,需要使用括号声明多个列

像这样:

parsed=parsed\u opc\
.withWatermark(“源时间戳”,“10分钟”)\
.dropDuplicates([“id”,“sourceTimeStamp”])\
.群比(
窗口(解析的opc.sourceTimeStamp,“4秒”),
解析的opc.id
) \
.agg({“值”:“平均值”})\
.WithColumnRename(“平均值)”,“平均值”)\
.orderBy(“平均值”,升序=真)