Apache Spark는 조인 중에 기본적으로 Null 값이 있는 행을 포함하지 않습니다. 이로 인해 Null을 포함하여 모든 데이터를 유지하려고 할 때 문제가 발생할 수 있습니다. 이 문서에서는 이 문제에 대한 해결책을 살펴봅니다.
두 개의 DataFrame에서 조인을 수행하면 Spark는 null 값이 있는 행을 제외합니다. 예를 들어 다음 DataFrame을 생각해 보세요.
val numbersDf = Seq( ("123"), ("456"), (null), ("") ).toDF("numbers") val lettersDf = Seq( ("123", "abc"), ("456", "def"), (null, "zzz"), ("", "hhh") ).toDF("numbers", "letters")
이 DataFrame에 조인을 수행하면 다음과 같은 출력이 나옵니다.
+-------+-------+ |numbers|letters| +-------+-------+ | 123| abc| | 456| def| | | hhh| +-------+-------+
보시다시피 행은 숫자 열의 null이 결과에서 제외되었습니다.
Spark는 특별한 null 값이 있는 조인을 처리하기 위한 null 안전 동등 연산자:
numbersDf .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers")) .drop(lettersDf("numbers"))
이 연산자는 두 피연산자가 모두 null이거나 같으면 true를 반환합니다. 이 연산자를 사용하면 원하는 출력을 얻을 수 있습니다.
+-------+-------+ |numbers|letters| +-------+-------+ | 123| abc| | 456| def| | null| zzz| | | hhh| +-------+-------+
Spark 2.3.0 :
이전 스파크 버전:
Spark 1.6 이전에는 널 안전 조인을 위해서는 데카르트 곱이 필요했습니다.
위 내용은 Apache Spark 조인 중에 Null 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!