행이 다른 DataFrame의 ID와 일치하고 타임 스탬프가 다른 프레임 타임 스탬프 아래에있는 경우 Scala Spark DataFrame을 필터링하는 방법

Tlanigan

편집 된시기를 기준으로 메시지 이벤트의 DataFrame에서 항목을 필터링하고 싶습니다. 메시지 이벤트가있는 DataFrame과 편집 된시기를 나타내는 다른 DataFrame이 있습니다. 편집 된 테이블에 일치하는 인덱스가 있고 메시지 테이블의 타임 스탬프가 해당 편집 이벤트 아래에있는 경우 삭제는 메시지 테이블의 행을 삭제해야합니다.

편집 된 데이터 프레임은 다음과 같습니다.

+----------+-------------------+
| timestamp|index              |
+----------+-------------------+
|1556247980|                 78|
|1558144430|                 87|
|1549964820|                 99|
+----------+-------------------+

메시지 DataFrame은 다음과 같습니다.

+-------------------+--------------------+------------------+--------------------+
|index              |  commonResponseText|publishedTimestamp|  commonResponseText|
+-------------------+--------------------+------------------+--------------------+
|                 78|Voluptatem enim a...|        1556247974|Voluptatem enim a...|
|                 87|Ut enim enim sunt...|        1558144420|Ut enim enim sunt...|
|                 99|Et est perferendi...|        1549964815|Et est perferendi...|
|                 78|Voluptatem porro ...|        1556248000|Voluptatem porro ...|
|                 87|Atque quod est au...|        1549965000|Atque quod est au...|
+-------------------+--------------------+------------------+--------------------+

결과는 다음과 같습니다.

+-------------------+--------------------+------------------+--------------------+
|commonResponseIndex|  index             |publishedTimestamp|  commonResponseText|
+-------------------+--------------------+------------------+--------------------+
|                 78|Voluptatem porro ...|        1556248000|Voluptatem porro ...|
|                 87|Atque quod est au...|        1549965000|Atque quod est au...|
+-------------------+--------------------+------------------+--------------------+

도와 주셔서 감사합니다!

Tlanigan

내가 한 일은 다음과 같습니다.

val editedDF = Seq(("A",3),("B",3)).toDF("id","timestamp")
val messageDF = Seq(("A",2),("B",2),("A",2),("A",3),("B",4),("A",2),("B",2),("c",9)).toDF("id","timestamp")

마지막으로이 조인을 사용했습니다.

    // Filter out the edited meesages.
    val editedFilteredDF  = messageDF.join(editedDF,
(editedDF("id") === messageDF("id")) && (editedDF("timestamp") > messageDF("timestamp")),
joinType="left_anti")

결과:

 editedFilteredDF.show()
+---+---------+
| id|timestamp|
+---+---------+
|  A|        3|
|  B|        4|
|  c|        9|
+---+---------+

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관