我有两个包含GB数据的大型pyspark数据框df1和df2。第一个数据框中的列是id1,col1。第二个数据框中的列是id2,col2。数据框的行数相等。id1和id2的所有值都是唯一的。id1的所有值也正好对应一个值id2。
因为。前几个条目与df1和df2区域相同,如下所示
DF1:
id1 | col1
12 | john
23 | chris
35 | david
df2:
id2 | col2
23 | lewis
35 | boon
12 | cena
所以我需要连接键 id1 和 id2 上的两个数据帧。df = df1.join(df2, df1.id1 == df2.id2) 恐怕这可能会受到洗牌的影响。如何针对此特殊情况优化连接操作?
为了避免联接操作时的混乱,请根据您的id列重新排列数据。
重新洗牌操作也将进行完全洗牌,但如果有多个加入,它将优化您的进一步加入。
df1 = df1.repartition('id1')
df2 = df2.repartition('id2')
避免联接时随机播放的另一种方法是利用存储桶。
通过在id上使用bucketBy子句来保存两个数据帧,然后当稍后读取数据帧时,id列将驻留在相同的执行器中,从而避免了混洗。
但是,为了利用bucketing的好处,您需要一个蜂巢元存储,因为其中包含bucketing信息。
此外,这将包括创建存储桶然后读取的额外步骤。
假设我有两个数据帧,具有不同级别的信息,如下所示: 我想加入df1和df2,并将“值”信息传递给df2:一天中的每一小时都将获得“日”值。 预期产出:
我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想将df1的所有列(我有两列以上)与客户ID上的df2连接值相乘
我有两个火花数据帧。我想基于第二个更新第一个。 数据流1 df2 我想更新第一个数据帧(df1),如下所示 我不知道如何加入嵌套结构中的数据
我有两个数据帧,DF1和DF2,DF1是存储来自DF2的任何附加信息的主机。 假设DF1是以下格式, DF2包含DF1中已经存在的2个条目和两个新条目。(itemId和item被视为一个组,可以被视为连接的键) 我需要合并两个数据框,以便增加现有项目计数并插入新项目。 结果应该是这样的: 我有一种方法可以做到这一点,但不确定这种方法是否有效或正确
我正在尝试在 pyspark 中连接两个数据帧,但将一个表作为数组列连接在另一个表上。 例如,对于这些表: 我想在列和上将df1连接到df2,但和应该是单个数组类型列。此外,应保留所有名称。新数据框的输出应该能够转换为此json结构(例如前两行): 任何关于如何实现这一目标的想法都将不胜感激! 谢谢, 卡罗莱纳州
我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想得到两个数据帧的余弦相似性。并有类似的东西