Apache spark TypeError dropDuplicates()接受1到2个位置参数,但给出了3个
我在Spark 2中播放流媒体数据 我想用dropDuplicates方法复制记录 我在Spark网站上发现,我可以将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
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(“平均值”,升序=真)