apache-spark - pyspark 数据帧中的顺序操作
问题描述
我有一个关于处理数据框(df)转换的最佳方法的问题。假设我有一个主 df,我需要将这个 df 与其他 3 个 df 加入。下面哪一个是实现这一目标的最佳方式(更好的性能)?创建多个 dfs 或重新分配给现有的一个?
1 - 每个步骤一个数据框
df = spark.read.orc(file)
df2 = spark.read.orc(file2)
df3 = spark.read.orc(file3)
df4 = spark.read.orc(file4)
df5 = df.join(df2, df.col==df2.col, 'inner')
df6 = df5.join(df3, df5.col==df3.col, 'inner')
df7 = df6.join(df4, df6.col==df4.col, 'inner')
df7.write.orc(file)
2 - 重新分配给现有的
df = spark.read.orc(file)
df2 = spark.read.orc(file2)
df3 = spark.read.orc(file3)
df4 = spark.read.orc(file4)
df = df.join(df2, df.col==df2.col, 'inner')
df = df.join(df3, df.col==df3.col, 'inner')
df = df.join(df4, df.col==df4.col, 'inner')
df.write.orc(file)
解决方案
第二个。Spark 的 DAG 足够智能,可以检测连接。
更好的是,在第二种方法中df
,您可以这样做,而不是多次分配:
df = df.join(df2, df.col==df2.col, 'inner')
.join(df3, df.col==df3.col, 'inner')
.join(df4, df.col==df4.col, 'inner')
推荐阅读
- c# - 在 c# 中一段时间后 Winforms UI 停止显示值
- json - 如何将 kafka 消息值转换为特定模式?
- php - 如何在 mysql php 中使用“Group By”获取平均值
- php - Symfony REST ParamConverter 注释问题
- c# - 部署到 Azure 应用服务时无法加载文件或程序集
- ios - IOS Swift4无法滚动ScrollView
- php - 为什么我的 QR 的 png img 没有在 php 中显示
- javascript - TypeScript 对象方法和嵌套对象同名
- bootstrap-4 - HikaShop 产品菜单滚动问题
- php - Wordpress:转到分页搜索的 page/2/ 时出现问题