[SCALA] 스파크 / 스칼라 dataframe에서의 하나 개의 컬럼의 값을 합산하는 방법
SCALA스파크 / 스칼라 dataframe에서의 하나 개의 컬럼의 값을 합산하는 방법
타임 스탬프, 단계, 심장 박동 등 : 나는 같은 많은 열이있는 CSV 파일에서 읽을 수있는 Dataframe이
나는 "단계"열 예를 들어, 단계의 총 수를 각 열의 값을 합계를.
지금까지 나는 기능의 이러한 종류를 사용하려면 참조로 : http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions$
하지만 함수의 합을 사용하는 방법을 이해할 수있다.
때 나는 다음 쓰기 :
val df = CSV.load(args(0))
val sumSteps = df.sum("steps")
함수 합계가 해결 될 수 없다.
내가 잘못 함수 합계를 사용하십니까? 마 Ι 먼저 기능 맵을 사용할 필요가? 어떻게 네 경우?
간단한 예는 매우 도움이 될 것입니다! 최근 스칼라를 쓰기 시작했다.
해결법
-
==============================
1.당신은 하나 개의 컬럼의 모든 값을 합계를 경우 DataFrame의 내부 RDD를 사용하고 감소하는 것이 더 효율적입니다.
당신은 하나 개의 컬럼의 모든 값을 합계를 경우 DataFrame의 내부 RDD를 사용하고 감소하는 것이 더 효율적입니다.
import sqlContext.implicits._ import org.apache.spark.sql.functions._ val df = sc.parallelize(Array(10,2,3,4)).toDF("steps") df.select(col("steps")).rdd.map(_(0).asInstanceOf[Int]).reduce(_+_) //res1 Int = 19
-
==============================
2.먼저 기능을 가져와야합니다 :
먼저 기능을 가져와야합니다 :
import org.apache.spark.sql.functions._
그럼 당신은 다음과 같이 사용할 수 있습니다 :
val df = CSV.load(args(0)) val sumSteps = df.agg(sum("steps")).first.get(0)
필요한 경우 또한 결과를 캐스팅 할 수 있습니다 :
val sumSteps: Long = df.agg(sum("steps").cast("long")).first.getLong(0)
편집하다:
여러 열 (예를 들어, "COL1", "COL2", ...)의 경우, 한 번에 모든 집계를 얻을 수 있습니다 :
val sums = df.agg(sum("col1").as("sum_col1"), sum("col2").as("sum_col2"), ...).first
Aaditi :
동적 집계를 적용 할 경우, 다음 옵션을 사용할 수 있습니다 :
df.groupBy().sum()
val columnNames = List("col1", "col2") df.groupBy().sum(columnNames: _*)
val cols = List("col1", "col2") val sums = cols.map(colName => sum(colName).cast("double").as("sum_" + colName)) df.groupBy().agg(sums.head, sums.tail:_*).show()
-
==============================
3.단순히 열을 집계 기능, 합계를 적용
단순히 열을 집계 기능, 합계를 적용
df.groupby('steps').sum().show()
문서 http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html에 따라
이 링크 https://www.analyticsvidhya.com/blog/2016/10/spark-dataframe-and-operations/을 확인
-
==============================
4.이 질문에 질문하지만 때 확실하지이 주변에 :
이 질문에 질문하지만 때 확실하지이 주변에 :
df.describe().show("columnName")
평균, 수, 열에 stdtev 통계를 제공한다. 내가) (당신이 단지 .show 할 경우 모든 열을 반환 생각
-
==============================
5.이 사람이 도움이된다면 경우에 불꽃 SQL query..just를 사용!
이 사람이 도움이된다면 경우에 불꽃 SQL query..just를 사용!
import org.apache.spark.sql.SparkSession import org.apache.spark.SparkConf import org.apache.spark.sql.functions._ import org.apache.spark.SparkContext import java.util.stream.Collectors val conf = new SparkConf().setMaster("local[2]").setAppName("test") val spark = SparkSession.builder.config(conf).getOrCreate() val df = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5, 6, 7)).toDF() df.createOrReplaceTempView("steps") val sum = spark.sql("select sum(steps) as stepsSum from steps").map(row => row.getAs("stepsSum").asInstanceOf[Long]).collect()(0) println("steps sum = " + sum) //prints 28
from https://stackoverflow.com/questions/37032025/how-to-sum-the-values-of-one-column-of-a-dataframe-in-spark-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 놀이! 프레임 워크 : 템플릿에 변수를 정의? [복제] (0) | 2019.11.28 |
---|---|
[SCALA] 스파크 데이터 세트에서 자신의 reduceByKey 롤링 (0) | 2019.11.28 |
[SCALA] 추가하거나 스칼라에서 튜플에 요소를 앞에 추가하는 방법 (0) | 2019.11.28 |
[SCALA] 스칼라 : 나는 스칼라를 사용 Dataframes에 값을 대체 할 수있는 방법 (0) | 2019.11.28 |
[SCALA] 익명 함수의 인수 유형은 완벽하게 알고 있어야합니다. (8.5 SLS) (0) | 2019.11.28 |