>source

내 RDD의 형식은 다음과 같습니다

RDD1=[['2','1','3','4'],['1','2','3','4'],['5','3','4','1']....['1','3','4','5']]

또는

RDD1=[('2','1','3','4'),('1','2','3','4'),('5','3','4','1')....('1','3','4','5')]

열에서 최소/최대를 찾는 o/p를

원합니다.

RDD_OUT_MAX=[('5','3','4'...'5')]
RDD_OUT_Min=[('1','1','3'...'1')]

Pyspark Code를 사용하여 달성 할 수있는 방법, MIN/Max를 찾는 데 맵/축소를 사용할 수 있습니까? 도와주세요

rdd=df1.rdd.map(list)
rdd=df1.rdd.map(tuple)

아래에서 시도했지만 운이 없다

rdd1.min()
rdd1.max()

  • 답변 # 1

    reduce() 를 사용할 수 있습니다  방법. 이것을 시도하십시오 :

    >>> rdd.reduce(lambda x,y:
    (min(x[0],y[0]),min(x[1],y[1]),min(x[2],y[2]),min(x[3],y[3])))
    (1, 1, 3, 1)
    >>> rdd.reduce(lambda x,y: (max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3])))
    (5, 3, 4, 5)
    
    

    rdd 전체에서 튜플의 각 항목에 대해 페어 단위 최소/최대 검사를 수행합니다.

    약간 짧지 만 읽기 어렵습니다 :

    >>> rdd.reduce(lambda x,y: tuple(map(min, zip(x,y))))
    (1, 1, 3, 1)
    >>> rdd.reduce(lambda x,y: tuple(map(max, zip(x,y))))
    (5, 3, 4, 5)
    
    

    다음과 같이 확장한다고 생각하면됩니다 :

    lambda x,y: tuple(map(max, zip(x,y))) =
    lambda x,y: tuple(map(max, [(x[0],y[0]),(x[1],y[1]),(x[2],y[2]),(x[3],y[3])]) =
    lambda x,y: tuple([max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3])]) =
    lambda x,y: (max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3]))
    
    

    실제로 발전기를 사용하므로 최종 tuple()  필요합니다.

  • 이전 html5 - 클릭하면 텍스트를 삭제하십시오자바 스크립트
  • 다음 reactjs : Reachjs에서 Open-Graph Social Share를 구현합니다