[SCALA] 어떻게 쌍 RDD에서 최대 값을 찾는 방법은?
SCALA어떻게 쌍 RDD에서 최대 값을 찾는 방법은?
I는 다음과 같이 스파크 쌍 RDD (키 수)를 가지고
Array[(String, Int)] = Array((a,1), (b,2), (c,1), (d,3))
어떻게 가장 높은 횟수가 스파크 스칼라 API를 사용하여 함께 키를 찾는 방법은?
EDIT : 도가니 EET의 데이터 형식 org.apache.spark.rdd.RDD 저하 [(문자열 INT)]
해결법
-
==============================
1.사용 Array.maxBy 방법 :
사용 Array.maxBy 방법 :
val a = Array(("a",1), ("b",2), ("c",1), ("d",3)) val maxKey = a.maxBy(_._2) // maxKey: (String, Int) = (d,3)
또는 RDD.max :
val maxKey2 = rdd.max()(new Ordering[Tuple2[String, Int]]() { override def compare(x: (String, Int), y: (String, Int)): Int = Ordering[Int].compare(x._2, y._2) })
-
==============================
2.사용 takeOrdered (1) (순서 [지능] .reverse.on (_._ 2)) :
사용 takeOrdered (1) (순서 [지능] .reverse.on (_._ 2)) :
val a = Array(("a",1), ("b",2), ("c",1), ("d",3)) val rdd = sc.parallelize(a) val maxKey = rdd.takeOrdered(1)(Ordering[Int].reverse.on(_._2)) // maxKey: Array[(String, Int)] = Array((d,3))
-
==============================
3.Pyspark 경우 :
Pyspark 경우 :
A는 다음 정수로 문자열로 키와 값 쌍 RDD하자
a.max(lambda x:x[1])
최대 값으로 키 값 쌍을 반환합니다. 람다 함수의 반환 값에 의해 기본적으로 최대 기능 주문.
여기에서는 [1] 막 엘리먼트의 정수 부분을 의미 예 ( '키'INT) 등의 원소 X와 함께 쌍 RDD이다.
그 자체로 최대 기능 키를 주문하고 최대 값을 반환합니다.
문서는 https://spark.apache.org/docs/1.5.0/api/python/pyspark.html#pyspark.RDD.max에서 확인할 수있다
-
==============================
4.그들이 RDD의로 왼쪽 및 배열로 전환하지 않을 경우 스파크 RDD 년대보다 효율적인 경시입니다
그들이 RDD의로 왼쪽 및 배열로 전환하지 않을 경우 스파크 RDD 년대보다 효율적인 경시입니다
strinIntTuppleRDD.reduce((x, y) => if(x._2 > y._2) x else y)
from https://stackoverflow.com/questions/26886275/how-to-find-max-value-in-pair-rdd by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크에서 액세스 배열 열 (0) | 2019.11.12 |
---|---|
[SCALA] 두 RDD [mllib.linalg.Vector]의 첨가 (0) | 2019.11.12 |
[SCALA] 스칼라에서 "반환"문의 목적? (0) | 2019.11.12 |
[SCALA] 어떻게 스칼라 스파크에서 엑셀 (XLS, XLSX) 파일에서 Dataframe을 구성하는? (0) | 2019.11.12 |
[SCALA] 스칼라에서 foldLeft를 사용하여 카레 함수에 인수리스트를 적용 (0) | 2019.11.12 |