apache-spark - Spark中leftOuterJoin的性能如何?

标签 apache-spark

如果我执行 A.leftOuterJoin(B),其中 A 是一个具有 10 亿个元素的 RDD[(K, V)],B 是一个具有 1000 个元素的 RDD[(K, W)],Spark 是否仍会复制A 的 10 亿个元素中的每一个都添加到新的 RDD 中?

最佳答案

上次我查看内部代码时,Join 是基于 coGroup() 的。

本质上,两个 RDD 都将通过它们的键进行混洗(通过网络),然后每个键的本地内存中将发生哈希连接。如果由于任何原因分区已经由您的 key 进行,则不会发生额外的随机播放。

至于“复制元素”,我不这么认为,应该复制本地指针,但不会存储前一阶段的中间结果,除非您手动保存它们。

关于apache-spark - Spark中leftOuterJoin的性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29154185/

相关文章:

java - 创建 Spark SQL 的 StructType : use add method or a constructor?

apache-spark - Spark 错误阅读 Parquet

scala - Spark Dataframe - 如何从结构类型列中获取特定字段

apache-spark - 异常运行/etc/hadoop/conf.cloudera.yarn/topology.py

apache-spark - EMR 无服务器上的 Spark-cassandra-connector (PySpark)

java - 获取异常 "java.lang.NoSuchFieldError: METASTORE_CLIENT_SOCKET_LIFETIME"或 "Required field ' client_protocol' 未设置!”

hadoop - 有没有一种方法可以将某种缓存用于Spark中最常用的查询的结果?

apache-spark - 如何在不加载整个文件的情况下读取前 n 行?

apache-spark - 当我在 Windows 7 中运行 `first` 或 `take` 方法时,pyspark 崩溃

java - 如何在 Apache Spark 中执行简单的reduceByKey?