私はスパークSQLを使用してリレーショナルDBに格納された構造化された大きなデータを処理する方法を知りたいですか?私は40億以上の線(GPS座標)を含むテーブルを持っています。マージ操作を使用すると、Sparkはメモリ内のテーブル全体を処理しようとしますが不可能です。私はスパークが "インメモリ"処理であることを知っていますが、私の場合、メモリはテーブル全体に適合できません。したがって、テーブルが大きいときにリレーショナルデータベースでsparkを使用することは可能ですか?テーブルが大きい場合、リレーショナルデータベースでSpark SQLを使用できますか?
1
A
答えて
2
読み込むデータがメモリサイズを超える場合、Sparkはデータセット全体を一度にすべてメモリにキャッシュしません。スパークドキュメント状態:スパークの中で最も重要な機能の
一つを操作間のメモリ内のデータセットを永続化(またはキャッシュ)されます。あなたはRDDを持続する場合、各ノードは1つがMEMORY_AND_DISKとしてストレージレベルを提供することができ、それがメモリに計算していること、それのいずれかのパーティションを格納し、
また、そのデータセット上の他のアクションでそれらを再利用
MEMORY_AND_DISK:RDDをJVM内の逆シリアル化されたJavaオブジェクトとして格納します。 RDDがメモリに収まらない場合は、ディスクに収まらないパーティションを格納し、必要になったときにそこから読み込みます。
あなたが使用するスパークデータ構造は、内部でRDDを使用しています。 JDBCは、フェッチ・サイズを、フェッチする行数を決定します。また、あなたは、外部のデータベースに接続するためにJDBCを使用している、あなたは財産のFetchSizeとバッチサイズ
のFetchSizeを指定することができると仮定し
ラウンドトリップごとに。これにより、デフォルトでフェッチ・サイズが小さいJDBCドライバ(たとえば、Oracle 10行)のパフォーマンスが向上します。このオプションは読書にのみ適用されます。
バッチサイズ:JDBCバッチサイズ。ラウンドトリップあたりに挿入する行の数を指定します。これにより、JDBCドライバのパフォーマンスが向上します。このオプションは、書き込みのみに適用されます。それは1000
val jdbcDF = spark.read
.format("jdbc")
.option("url", "jdbc:postgresql:dbserver")
.option("dbtable", "schema.tablename")
.option("user", "username")
.option("password", "password")
.option("fetchsize", "100")
.load()
デフォルト
関連する問題
- 1. を使用すると、他のテーブルと関係のないテーブルを作成できますか?リレーショナルデータベースで
- 2. アンドロイドバージョンコードが1より大きい場合、0から開始できますか?
- 3. 大きなテーブルの問題(プライマリキーが使用できない)
- 4. SSISマージ結合で「より大きい」を使用できますか?
- 5. SQLでは、一時テーブルでJOINを使用できますか?
- 6. すべてのテーブルがInnoDBを使用している場合でもkey_buffer_sizeは適用できますか?
- 7. spark-SQL CLIで利用可能なテーブルはthriftserverで利用できません
- 8. Javaでapache poiを使用した場合のセルの色が大きい
- 9. データベースがDjangoモデルではない場合、テーブルをデータベース内で使用できますか?
- 10. Sparkで大きいgzファイルを読む
- 11. ディレクトリサイズがnより大きい場合
- 12. mysql_num_rowsが0より大きい場合
- 13. サイズファイルが大きい場合は、$ _FILEが空です。Codeigniter
- 14. SQLクエリ結合テーブル - サブクエリが1より大きい値を返しました
- 15. データベース名がすべて大文字である場合、rPostgreSQLを使用してPostgresqlにテーブルを書き込む
- 16. sp_send_dbmailを使用する場合、HTML電子メールでsql変数を使用できますか?
- 17. canvas.getContext( '3d')を使用できますか?はいの場合、どうですか?
- 18. レイヤードウィンドウを使用する場合、AW_BLENDでAnimateWindowを使用できますか?
- 19. spark-sqlを使用してsparkでハイブの動的パーティションを増やすことができません
- 20. relationでcountがXより大きい場合はSQLを選択しますか?
- 21. rowSumsが1より大きい場合、合計で割ります
- 22. sbtがローカルにない場合、yahoo-kafka-managerを使用できますか?
- 23. モデルをSparkバッチで作成し、Sparkストリーミングで使用できますか?
- 24. テーブルでエンコーディングを使用する場合
- 25. 大きなSQLテーブルのアクセスパススルークエリ
- 26. hive/spark-sqlを使用して大きなデータセットを生成する方法は?
- 27. リクエストボディが大きい場合、nginxが不正なパケットを返すか、リクエストボディが大きい場合は200で応答しない
- 28. マージ結合の出力にSQLを使用できますか?
- 29. この場合、Java ObserverとObservableを使用できますか?
- 30. 私の場合、どのクラスターを使用できますか?