最佳答案
我正在尝试找出获得 Spark 数据框列中最大值的最佳方法。
Consider the following example:
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,下面是我能想到的四种方法:
# Method 1: Use describe()
float(df.describe("A").filter("summary = 'max'").select("A").first().asDict()['A'])
# Method 2: Use SQL
df.registerTempTable("df_table")
spark.sql("SELECT MAX(A) as maxval FROM df_table").first().asDict()['maxval']
# Method 3: Use groupby()
df.groupby().max('A').first().asDict()['max(A)']
# Method 4: Convert to RDD
df.select("A").rdd.max()[0]
上面的每一个都给出了正确的答案,但是在缺乏 Spark 分析工具的情况下,我无法判断哪个是最好的。
在 Spark 运行时或资源使用方面,或者是否有比上述方法更直接的方法?