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 중국어 웹사이트의 기타 관련 기사를 참조하세요!