当前位置: 首页 > 知识库问答 >
问题:

Spark:如何在不使用任何连接的情况下过滤行?

宿鹏程
2023-03-14

假设我有两个数据帧,df1和df2。df1和df2都包含“id”列。我想过滤df1,这样得到的df,df1prime,有

  • 只有在df1中找到的ID
  • 在df2中没有找到所有ID

而不使用任何连接。我该怎么做?返回RDDs而不是DFs会有帮助吗?pyspark和scala响应都受到欢迎。

谢谢!

编辑:我想保留df1中的所有行

共有1个答案

曾典
2023-03-14

如果你真的只想要你的< code>df1prime中的id(如你在问题中所述),那么你可以简单地做(scala):

val df1primeIDs = df1.select($"id").except(df2.select($"id"))

如果你需要 df1 的整个列,没有连接,我没有看到任何其他选项,除了(上面的行,假设id类型很长):

val df1prime = df1.where($"id".isin(
   df1primeIDs.collect().map(_.getLong(0)):_*)
 )

但通常情况下,收集不是一个选项。。。

 类似资料:
  • 本文向大家介绍如何在不使用BasePACKAGE过滤器的情况下排除程序包?相关面试题,主要包含被问及如何在不使用BasePACKAGE过滤器的情况下排除程序包?时的应答技巧和注意事项,需要的朋友参考一下 过滤程序包的方法不尽相同。但是弹簧启动提供了一个更复杂的选项,可以在不接触组件扫描的情况下实现这一点。在使用注释@ SpringBootApplication时,可以使用排除属性。请参阅下面的代码

  • 我有一个返回字符串的函数。 返回的结果可以是回答,也可以是回答

  • 问题内容: 我正在解决Programming Pearls,第二版,第1列中的问题。其中一个问题涉及编写一个程序,该程序仅使用大约1 MB的内存将文件内容存储为位数组,每个位代表是否或文件中没有7位数字。由于Java是我最熟悉的语言,因此即使作者似乎已经想到了C和C ++,我还是决定使用它。 由于我是为了解决我正在处理的问题而假装有限的内存,因此我想确保读取文件的过程完全没有缓冲。 在我阅读Jav

  • 问题内容: 我希望能够以不同于web.xml的方式修改/配置过滤器。这是2个过滤器的静态配置。我希望能够静态配置一个过滤器,并允许该过滤器加载其他过滤器。我只是想知道是否有人知道lib已有此功能。 使用Servlet API 2.5 我已经在Guice的GuiceFilter中完成了此操作,其中在运行时配置了过滤器。 问题答案: 只需执行与容器已完成的相同的工作即可。即,按照servlet过滤器所

  • 问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul

  • 我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。