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!你太棒了。这确实有帮助。我接受这个答案。此代码是否可以扩展到计算其他因素,如偏度、中值、唯一值、峰度等。是的,您可以计算偏度和峰度,您可以在此处看到