>데이터 베이스 >MySQL 튜토리얼 >Apache Spark 조인에 Null 값을 포함하는 방법은 무엇입니까?

Apache Spark 조인에 Null 값을 포함하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-27 06:53:22138검색

How to Include Null Values in Apache Spark Joins?

Apache Spark 조인에 Null 값 포함

Apache Spark의 기본 조인 동작은 Null 값이 있는 행을 제외하므로 그러한 가치를 보존하는 것입니다. 이 문서에서는 Apache Spark 조인 작업에 null 값을 포함하는 방법을 설명하여 이 문제를 해결합니다.

기본 Spark 동작

기본적으로 Spark는 내부 조인을 수행합니다. 조인 조건과 관련된 열 중 하나에서 Null 값이 있는 행을 제거합니다. 이를 설명하기 위해 다음 예를 고려하십시오.

val numbersDf = Seq(
  ("123"),
  ("456"),
  (null),
  ("")
).toDF("numbers")

val lettersDf = Seq(
  ("123", "abc"),
  ("456", "def"),
  (null, "zzz"),
  ("", "hhh")
).toDF("numbers", "letters")

val joinedDf = numbersDf.join(lettersDf, Seq("numbers"))

joinDf.show()의 출력은 다음과 같습니다.

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|       |    hhh|
+-------+-------+

예상대로 null 값이 있는 행은 numberDf의 "numbers" 열은 조인 결과에서 제외됩니다.

Null 포함 값

Spark는 널 안전 동등 연산자를 통해 이 문제에 대한 솔루션을 제공합니다. 다음 코드를 사용하면 null 값이 조인 작업에 포함될 수 있습니다.

numbersDf
  .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers"))
  .drop(lettersDf("numbers"))

이 수정된 조인 작업은 다음과 같은 출력을 생성하며, 이제 이전에 null 값이 제외된 행이 포함됩니다.

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|   null|    zzz|
|       |    hhh|
+-------+-------+

이 널 안전 동등 연산자는 비용이 많이 드는 데카르트 연산이 필요하므로 Spark 1.6 이전 버전에서는 주의해서 사용해야 한다는 점에 유의하는 것이 중요합니다. product.

Spark 2.3.0 이상

Spark 2.3.0 이상에서는 PySpark에서 Column.eqNullSafe 메서드를 사용할 수 있지만 %=< ;=>% 연산자를 SparkR에서 사용하여 동일한 결과를 얻을 수 있습니다. 또한 Spark 2.2.0에서는 SQL 구문 IS NOT DISTINCT FROM을 DataFrame API와 함께 사용하여 조인 작업에 null 값을 포함할 수 있습니다.

위 내용은 Apache Spark 조인에 Null 값을 포함하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.