我有两个mongodb集合,每个集合都有数百万条记录(例如:每个都有30 GB)。 将数据帧加载到spark后,我试图对数据执行联接。 我注意到的是,在这种情况下,spark会延迟加载。 (转化/动作场景)
我的pyspark代码看起来像这样
df1=spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",con).load()
df2 = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",con2).load()
res = df1.join(df2,df1.xyz = df2.xyz, "inner")
现在,所有这些行都会立即“几乎”执行。但是,当我跑步时。
res.show()
执行需要一段时间。我的评估是该联接是在mongodb中进行的,而不是火花。
是否有任何方法可以避免延迟加载,并确保两个数据帧都在Spark中,并且联接在Spark中进行。 (我正在尝试研究在mongodb和spark上加入数据之间是否有任何明显的区别)