首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError dropDuplicates()接受1到2个位置参数,但给出了3个

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

Stack Overflow用户
提问于 2019-07-21 05:28:00
回答 1查看 1.2K关注 0票数 0

我已经在Spark 2中播放过流媒体数据。

我想用dropDuplicates方法复制记录。

我在Spark网站上发现我可以在watermark中使用dropDuplicates

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

代码语言:javascript
复制
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时:

代码语言:javascript
复制
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() takes from 1 to 2 positional arguments but 3 were given

我不明白为什么会抛出这个错误。这种用法在Spark网站上也有,就像这样。这个错误的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-21 10:18:31

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

如下所示:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57128726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档