Scala 使用Spark dataframe和垂直对齐输出计算最小最大值
我需要读取拼花地板文件并在 表格格式如下所示Scala 使用Spark dataframe和垂直对齐输出计算最小最大值,scala,apache-spark,apache-spark-sql,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,我需要读取拼花地板文件并在 表格格式如下所示 **Required output** column_name | min_value | max_value :----- | ----- :|:----: a | 1 | 21 :----- |------ :|:----: b | 2 | 30 下面的代码,我能够读取拼花文件并生成最小值 所有列的最大输出,但不是按照要求的格式,而是
**Required output**
column_name | min_value | max_value
:----- | ----- :|:----:
a | 1 | 21
:----- |------ :|:----:
b | 2 | 30
下面的代码,我能够读取拼花文件并生成最小值
所有列的最大输出,但不是按照要求的格式,而是
生成的输出是水平对齐的
//Read parquet file
val parquetRDD = spark.read.parquet("filename.parquet")
//Calculate min and max value of columns
val minColumns = parquetRDD.columns.map(name => min(col(name)))
val maxColumns = parquetRDD.columns.map(name => max(col(name)))
val allMinMax = minColumns ++ maxColumns
//Generate output
val result = parquetRDD.agg(allMinMax.head, allMinMax.tail: _*).show()
**Current Generated Output**
min(a) | min(b) | max(a) | max(b)
:----- | -----: | ----: | :----:
1 | 2 | 21 | 30
有没有一种方法可以将生成的输出与
列名采用垂直对齐格式,如所需的
上面的输出部分 如果要查找每列的最小值和最大值,可以使用ins spark sql,计算平均值和标准偏差 下面是一个简单的例子,它是如何生成的
import spark.implicits._
val df1 = Seq((1,2,3), (3,4,5), (1,2,4)).toDF("A", "B", "C")
df1.describe().show()
输出:
+-------+------------------+------------------+---+
|summary| A| B| C|
+-------+------------------+------------------+---+
| count| 3| 3| 3|
| mean|1.6666666666666667|2.6666666666666665|4.0|
| stddev|1.1547005383792517|1.1547005383792517|1.0|
| min| 1| 2| 3|
| max| 3| 4| 5|
+-------+------------------+------------------+---+
希望这有帮助 谢谢Shankar!你太棒了。这确实有帮助。我接受这个答案。此代码是否可以扩展到计算其他因素,如偏度、中值、唯一值、峰度等。是的,您可以计算偏度和峰度,您可以在此处看到