복붙노트

[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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    4.그들이 RDD의로 왼쪽 및 배열로 전환하지 않을 경우 스파크 RDD 년대보다 효율적인 경시입니다

    그들이 RDD의로 왼쪽 및 배열로 전환하지 않을 경우 스파크 RDD 년대보다 효율적인 경시입니다

    strinIntTuppleRDD.reduce((x, y) => if(x._2 > y._2) x else y)
    
  5. from https://stackoverflow.com/questions/26886275/how-to-find-max-value-in-pair-rdd by cc-by-sa and MIT license