을 얻을 최소 및 최대에서는 특정 열 스칼라 데이터 프레임 spark

나는 것처럼 액세스를 최소 및 최대의 특정 란에서 내 데이터 프레임지만 나는't 헤더의 열,단지의 숫자,그래서 나는 내가 스칼라를 사용하여?

어쩌면 뭔가 다음과 같다:

val q = nextInt(ncol) //we pick a random value for a column number
col = df(q)
val minimum = col.min()

죄송하는 경우 이 같은 소리는 바보 같은 질문을 하지만 난 그러지'해 정보에 그래서 이런 질문에 대한:/

해결책

는 방법에 대해 점점에서 열 이름을 메타데이터:

val selectedColumnName = df.columns(q) //pull the (q + 1)th column from the columns array
df.agg(min(selectedColumnName), max(selectedColumnName))
해설 (0)

당신이 사용할 수 있는 패턴 매칭을 하는 동안 변수를 지정:

import org.apache.spark.sql.functions.{min, max}
import org.apache.spark.sql.Row

val Row(minValue: Double, maxValue: Double) = df.agg(min(q), max(q)).head

Q 중나 열 이름(문자열). 가정 데이터 형식은두 번.

해설 (1)

당신이 사용할 수 있습의 열 번호를 추출하는 첫 번째 열 이름(인덱싱하여`df.열),다음의 집계를 사용하여 열 이름:

val df = Seq((2.0, 2.1), (1.2, 1.4)).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: double, B: double]

df.agg(max(df(df.columns(1))), min(df(df.columns(1)))).show
+------+------+

|max(B)|min(B)|
+------+------+
|   2.1|   1.4|
+------+------+
해설 (0)

여기에는 직접적인 방법을 최소 및 최대서 데이터 프레임으로 열 이름:

val df = Seq((1, 2), (3, 4), (5, 6)).toDF("A", "B")

df.show()
/*
+---+---+
|  A|  B|
+---+---+
|  1|  2|
|  3|  4|
|  5|  6|
+---+---+
*/

df.agg(min("A"), max("A")).show()
/*
+------+------+
|min(A)|max(A)|
+------+------+
|     1|     5|
+------+------+
*/

을 얻고 싶은 경우에는 최소값과 최대값으로 별도의 변수,그 후로 변환할 수 있는 결과의처럼 도시()위로사용 행이 있습니다.getInt(index)에 열의 값을.

val min_max = df.agg(min("A"), max("A")).head()
// min_max: org.apache.spark.sql.Row = [1,5]

val col_min = min_max.getInt(0)
// col_min: Int = 1

val col_max = min_max.getInt(1)
// col_max: Int = 5
해설 (0)

자바에서,우리는 명시적으로 언급org.apache.spark.sql.함수가 구현한최`:

datasetFreq.agg(functions.min("Frequency"), functions.max("Frequency")).show();
해설 (0)