ホームページ > データベース > mysql チュートリアル > Apache Spark の参加中に Null 値を保持するにはどうすればよいですか?

Apache Spark の参加中に Null 値を保持するにはどうすればよいですか?

DDD
リリース: 2024-12-31 17:36:11
オリジナル
210 人が閲覧しました

How Can I Preserve Null Values During Apache Spark Joins?

Apache Spark 結合での Null 値の保持

デフォルトでは、Apache Spark は結合を実行するときに Null 値を持つ行を省略します。これらの値を結合出力に含めるために、Spark にはいくつかのオプションが用意されています。

NULL セーフ等価演算子 (<=>)

Spark 1.6 では、特別な NULL が導入されました。 -safe 等価演算子。結合に null 値を含めることができます。 criteria.

numbersDf
  .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers"))
  .drop(lettersDf("numbers"))<p><strong>Column.eqNullSafe (PySpark 2.3.0 )</strong></p>
<p>PySpark 2.3.0 以降では、Column.eqNullSafe を使用して NULL- を実行できます。安全な平等</p>
<pre class="brush:php;toolbar:false">numbers_df = sc.parallelize([
    ("123", ), ("456", ), (None, ), ("", )
]).toDF(["numbers"])

letters_df = sc.parallelize([
    ("123", "abc"), ("456", "def"), (None, "zzz"), ("", "hhh")
]).toDF(["numbers", "letters"])

numbers_df.join(letters_df, numbers_df.numbers.eqNullSafe(letters_df.numbers))
ログイン後にコピー

%<=>% (SparkR)

SparkR は、NULL セーフな等価性チェック用の %<=>% 演算子を提供します。 .

numbers_df <- createDataFrame(data.frame(numbers = c("123", "456", NA, "")))
letters_df <- createDataFrame(data.frame(
  numbers = c("123", "456", NA, ""),
  letters = c("abc", "def", "zzz", "hhh")
))

head(join(numbers_df, letters_df, numbers_df$numbers %<=>% letters_df$numbers))
ログイン後にコピー

は区別できませんFROM (SQL)

SQL (Spark 2.2.0 ) では、IS NOT DISTINCT FROM を使用して結合で null 値を保持できます。

SELECT * FROM numbers JOIN letters 
ON numbers.numbers IS NOT DISTINCT FROM letters.numbers
ログイン後にコピー

この演算子は次のようにすることもできます。 DataFrame API で使用:

numbersDf.alias("numbers")
  .join(lettersDf.alias("letters"))
  .where("numbers.numbers IS NOT DISTINCT FROM letters.numbers")
ログイン後にコピー

以上がApache Spark の参加中に Null 値を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート