在Spark dataframe列中获取最大值的最佳方法
- 论坛
- 在Spark dataframe列中获取最大值的最佳方法
12 浏览
在Spark dataframe列中获取最大值的最佳方法
我正在尝试找出在Spark dataframe列中获取最大值的最佳方法。考虑以下示例:
df = spark.createDataFrame([(1., 4.), (2., 5.), (3., 6.)], ["A", "B"]) df.show()
它创建了如下表格:
+---+---+ | A| B| +---+---+ |1.0|4.0| |2.0|5.0| |3.0|6.0| +---+---+
我的目标是找到列A中的最大值(根据观察,为3.0)。使用PySpark,我有以下四种方法:
# 方法1:使用describe() float(df.describe("A").filter("summary = 'max'").select("A").first().asDict()['A']) # 方法2:使用SQL df.registerTempTable("df_table") spark.sql("SELECT MAX(A) as maxval FROM df_table").first().asDict()['maxval'] # 方法3:使用groupby() df.groupby().max('A').first().asDict()['max(A)'] # 方法4:转换为RDD df.select("A").rdd.max()[0]
以上每种方法都给出了正确的答案,但在没有Spark性能分析工具的情况下,我无法确定哪种方法最好。根据直觉或经验,对于Spark运行时或资源使用,上述方法中哪种最有效,或者是否有比上述方法更直接的方法?