Pythonを使用してSparkで2つのRDDテーブルの基本的な結合をどのように実行しますか?

invoketheshell:

Pythonを使用してSparkで基本的な結合をどのように実行しますか?Rでは、これを行うためにmerg()を使用できます。スパークでPythonを使用する構文は何ですか?

  1. 内部結合
  2. 左外部結合
  3. クロスジョイン

2つのテーブル(RDD)があり、それぞれに共通のキーを持つ単一の列があります。

RDD(1):(key,U)
RDD(2):(key,V)

内部結合は次のようなものだと思います。

rdd1.join(rdd2).map(case (key, u, v) => (key, ls ++ rs));

そうですか?インターネットを検索しましたが、結合の良い例が見つかりません。前もって感謝します。

zero323:

これは、PairRDDFunctionsまたはSparkデータフレームを使用して実行できますデータフレームの操作にはCatalystオプティマイザメリットがあるため、2番目のオプションは検討に値します。

データが次のようになっているとします。

rdd1 =  sc.parallelize([("foo", 1), ("bar", 2), ("baz", 3)])
rdd2 =  sc.parallelize([("foo", 4), ("bar", 5), ("bar", 6)])

PairRDDの場合:

内部結合:

rdd1.join(rdd2)

左外部結合:

rdd1.leftOuterJoin(rdd2)

デカルト積(必須ではありませんRDD[(T, U)]):

rdd1.cartesian(rdd2)

ブロードキャスト参加(必須ではありませんRDD[(T, U)]):

最後に、cogroupSQLに直接対応するものはありませんが、状況によっては役立つ場合があります。

cogrouped = rdd1.cogroup(rdd2)

cogrouped.mapValues(lambda x: (list(x[0]), list(x[1]))).collect()
## [('foo', ([1], [4])), ('bar', ([2], [5, 6])), ('baz', ([3], []))]

Sparkデータフレーム

SQL DSLを使用するか、を使用して生のSQLを実行できますsqlContext.sql

df1 = spark.createDataFrame(rdd1, ('k', 'v1'))
df2 = spark.createDataFrame(rdd2, ('k', 'v2'))

# Register temporary tables to be able to use `sparkSession.sql`
df1.createOrReplaceTempView('df1')
df2.createOrReplaceTempView('df2')

内部結合:

# inner is a default value so it could be omitted
df1.join(df2, df1.k == df2.k, how='inner') 
spark.sql('SELECT * FROM df1 JOIN df2 ON df1.k = df2.k')

左外部結合:

df1.join(df2, df1.k == df2.k, how='left_outer')
spark.sql('SELECT * FROM df1 LEFT OUTER JOIN df2 ON df1.k = df2.k')

クロスジョイン(Spark。2.0ではSpark.2.0 - spark.sql.crossJoin.enabledで明示的なクロスジョインまたは構成の変更が必要です):

df1.crossJoin(df2)
spark.sql('SELECT * FROM df1 CROSS JOIN df2')

df1.join(df2)
sqlContext.sql('SELECT * FROM df JOIN df2')

1.6(Scalaでは1.5)以降、これらはそれぞれbroadcast関数と組み合わせることができます

from pyspark.sql.functions import broadcast

df1.join(broadcast(df2), df1.k == df2.k)

ブロードキャスト参加を実行します。BroadcastHashJoinがSparkのShuffledHashJoinより遅い理由も参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JPA基準を使用して2つの無関係なテーブルを結合したままにするにはどうすればよいですか?

分類Dev

Sparkでscalaを使用して、forループなしでRDD [DataFrame]のすべてのDataFrameをDataFrameに結合するにはどうすればよいですか?

分類Dev

SQL Serverを使用して、3つのテーブルすべての間の共通の列で外部結合している3つの別々のテーブル間でクエリを実行するにはどうすればよいですか?

分類Dev

行が重複しないように、複数の列で2つのテーブルを結合します

分類Dev

(Sparkスキュー結合)メモリの問題なしに、高度に複製されたキーを使用して2つの大きなSpark RDDを結合するにはどうすればよいですか?

分類Dev

Codeigniterで2つの結合テーブルを使用してテーブルにデータを表示するにはどうすればよいですか

分類Dev

2つのテーブルの結合を使用してテーブルを更新するにはどうすればよいですか?

分類Dev

2つのテーブルを結合してから、2つの異なる列を選択するにはどうすればよいですか?

分類Dev

MySQlの問題、3つのテーブルで左外部結合を実行しようとしています

分類Dev

これらの2つのテーブルを結合/結合して、1つの結果を得るにはどうすればよいですか?

分類Dev

SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

分類Dev

SQLクエリを作成して複数のテーブルから全文検索を実行し、さまざまなテーブルからの結果を結合するにはどうすればよいですか?

分類Dev

2つのテーブルで内部結合を使用した後に複数の行を追加するにはどうすればよいですか?

分類Dev

2つのMySQLテーブルを結合し、そのうちの1つで基本的なフィルタリングを実行する

分類Dev

Entity Frameworkを使用して2つ以上のテーブルの結合ビューで変更を保存するにはどうすればよいですか?

分類Dev

SQL同じ列を持つテーブルを結合し、結合のような統計を使用するにはどうすればよいですか?

分類Dev

SQL Server 2012で複数のテーブルを使用してスイッチ外部結合を実行するにはどうすればよいですか?

分類Dev

Sqlite3:行を合計して値が行にないかどうかを確認する3つのテーブルを結合します

分類Dev

Cloud Dataflowを使用して2つ以上のキーのBQテーブルを結合するにはどうすればよいですか?

分類Dev

Hibernate(5.4)Criteriaを使用して2つのテーブルをグループクエリで結合するにはどうすればよいですか?

分類Dev

Simple OData Clientで結合を使用して2つのテーブルからデータを取得するにはどうすればよいですか?

分類Dev

最初の関連する日付を使用して2つのテーブルを結合するにはどうすればよいですか?

分類Dev

多対多の関係にある2つのテーブルを使用してJavaMapreduceでreduceサイド結合を実行するにはどうすればよいですか?

分類Dev

MySQL 8.0.17バージョンを使用して2つの異なるテーブルのすべての行を結合するにはどうすればよいですか?

分類Dev

2つのテーブルで結合します。file_nameには余分な文字列があり、正規表現を使用してファイル名から文字列を削除し、結合を実行します

分類Dev

結合を使用して2つのテーブルからデータを検索するにはどうすればよいですか

分類Dev

「結合」を使用して2つのテーブルからデータを取得するにはどうすればよいですか?

分類Dev

結合またはgroupWithを実行する場合、JavaのSparkは2つのキーをどのように比較しますか?

分類Dev

3つのテーブルを結合し、2つの異なる条件でフィールドを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    JPA基準を使用して2つの無関係なテーブルを結合したままにするにはどうすればよいですか?

  2. 2

    Sparkでscalaを使用して、forループなしでRDD [DataFrame]のすべてのDataFrameをDataFrameに結合するにはどうすればよいですか?

  3. 3

    SQL Serverを使用して、3つのテーブルすべての間の共通の列で外部結合している3つの別々のテーブル間でクエリを実行するにはどうすればよいですか?

  4. 4

    行が重複しないように、複数の列で2つのテーブルを結合します

  5. 5

    (Sparkスキュー結合)メモリの問題なしに、高度に複製されたキーを使用して2つの大きなSpark RDDを結合するにはどうすればよいですか?

  6. 6

    Codeigniterで2つの結合テーブルを使用してテーブルにデータを表示するにはどうすればよいですか

  7. 7

    2つのテーブルの結合を使用してテーブルを更新するにはどうすればよいですか?

  8. 8

    2つのテーブルを結合してから、2つの異なる列を選択するにはどうすればよいですか?

  9. 9

    MySQlの問題、3つのテーブルで左外部結合を実行しようとしています

  10. 10

    これらの2つのテーブルを結合/結合して、1つの結果を得るにはどうすればよいですか?

  11. 11

    SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

  12. 12

    SQLクエリを作成して複数のテーブルから全文検索を実行し、さまざまなテーブルからの結果を結合するにはどうすればよいですか?

  13. 13

    2つのテーブルで内部結合を使用した後に複数の行を追加するにはどうすればよいですか?

  14. 14

    2つのMySQLテーブルを結合し、そのうちの1つで基本的なフィルタリングを実行する

  15. 15

    Entity Frameworkを使用して2つ以上のテーブルの結合ビューで変更を保存するにはどうすればよいですか?

  16. 16

    SQL同じ列を持つテーブルを結合し、結合のような統計を使用するにはどうすればよいですか?

  17. 17

    SQL Server 2012で複数のテーブルを使用してスイッチ外部結合を実行するにはどうすればよいですか?

  18. 18

    Sqlite3:行を合計して値が行にないかどうかを確認する3つのテーブルを結合します

  19. 19

    Cloud Dataflowを使用して2つ以上のキーのBQテーブルを結合するにはどうすればよいですか?

  20. 20

    Hibernate(5.4)Criteriaを使用して2つのテーブルをグループクエリで結合するにはどうすればよいですか?

  21. 21

    Simple OData Clientで結合を使用して2つのテーブルからデータを取得するにはどうすればよいですか?

  22. 22

    最初の関連する日付を使用して2つのテーブルを結合するにはどうすればよいですか?

  23. 23

    多対多の関係にある2つのテーブルを使用してJavaMapreduceでreduceサイド結合を実行するにはどうすればよいですか?

  24. 24

    MySQL 8.0.17バージョンを使用して2つの異なるテーブルのすべての行を結合するにはどうすればよいですか?

  25. 25

    2つのテーブルで結合します。file_nameには余分な文字列があり、正規表現を使用してファイル名から文字列を削除し、結合を実行します

  26. 26

    結合を使用して2つのテーブルからデータを検索するにはどうすればよいですか

  27. 27

    「結合」を使用して2つのテーブルからデータを取得するにはどうすればよいですか?

  28. 28

    結合またはgroupWithを実行する場合、JavaのSparkは2つのキーをどのように比較しますか?

  29. 29

    3つのテーブルを結合し、2つの異なる条件でフィールドを取得するにはどうすればよいですか?

ホットタグ

アーカイブ