use*_*730 2 dataframe apache-spark rdd apache-spark-sql
当我执行变换时
pairedRdd1.join(pairedRdd2)
Run Code Online (Sandbox Code Playgroud)
要么
dataframe1.join(dataframe2, dataframe1.one == dataframe2.one)
Run Code Online (Sandbox Code Playgroud)
第一个PairRDD或DataFrame中的每个元素都与第二个中的每个元素进行比较,还是更高效地完成?基于我对Spark存储如何工作的理解,答案就是前者.但我一直认为,有某种Spark魔法使得查找速度更快.
标准RDD和DataFrame都没有编入索引.要在Spark joins上执行on PairwiseRDDs和相等连接,DataFrames就是使用分区.它可以利用现有分区程序,或者如果不存在分区程序,则应用分区作为join操作的一部分.
这意味着基于相等的连接只需要对定义良好的对进行比较,而不是完整的笛卡尔积.在分区级别,这可以通过使用coGroup类似操作(RDD)或SortMergeJoin(DataFrames)进一步改进.
这并不意味着无法对分布式数据结构进行索引.Spark生态系统中有一些工具可以在Spark(IndexedRDD)之上提供索引或使用外部索引(IgniteRDD).最后,压缩的列式存储可用于对未编制索引的数据执行有效查找.
关于all的lookup操作PairwiseRDD取决于分区:
lookup器相当于filter.| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |