Spark Executorはどのようにコードを実行しますか?複数のスレッドが実行されていますか?はいの場合、RDBMSとの間でデータの読み書きを行うために複数のJDBCが開きますか?Sparkエグゼキュータはマルチスレッドですか?
答えて
あなたが1以上にspark.executor.cores
を設定する場合は、[はい、そしてあなたのエグゼキュータは、複数の並列スレッドを持つことになります、はい、私はmutliple JDBCが接続され、その後の推測では、どのようにスパークエグゼキュータは、コードを実行しますか?
を開かれますか
オープンソースの美しさであるApache Sparkプロジェクトには、コードを見て自分で答えを見つけることができます。これが答えを見つけるのに最適で唯一の方法だとは限りませんが、コード自体と同じくらい明確ではないかもしれません(逆も可能です:))
複数のスレッドが実行されていますか?
はい。 this lineを参照してください。Executor
は、新しいTaskRunner
を作成します。これはJavaのRunnable
(別のスレッド)です。そのRunnable
はexecuted on the thread poolになる予定です。スパークは、スレッドプールに使用するJavaのExecutors.newCachedThreadPoolを引用
:
は、必要に応じて新しいスレッドを作成するスレッドプールを作成しますが、彼らが用意されていたときに、以前に構築されたスレッドを再利用し、作成するために提供ThreadFactoryを使用しています必要に応じて新しいスレッド。
「はい」の場合は、RDBMSからデータを読み書きするために複数のJDBCが開きますか?
私はすでに答えを知っていると確信しています。はい、それは複数の接続を開き、なぜforeachPartition
操作を使用して_ "このデータセットの各パーティションに関数f
を適用する必要がありますか?" (RDDにも同じ)と何らかの種類の接続プールがあります。
ローカルでsparkを実行すると簡単にテストできます。
val conf = new SparkConf()
.setMaster("local[2]")
.setAppName("JDBCTest")
val sc = new SparkContext(conf)
上記のsnippet local [2]は、2つのスレッドを意味します。 RDDの処理中にJDBC接続を開くと、sparkは各タスクに対してこれを行います。
スパークは設計上、スパークで並列実行されるため、スパークはメモリ内タスクの実行においてより効率的です。最初は、RDDごとにJDBC接続を開く必要があるコードを書く必要はありません。処理のために、以下のスニペットを参照してください。
Dataset<Row> jdbcDF = spark.read().format("jdbc").option("url", mySQLConnectionURL)
.option("driver", MYSQL_DRIVER).option("dbtable", sql).option("user", userId)
.option("password", dbpassword).load();
乾杯!
- 1. Sparkエグゼキュータのオブジェクトキャッシュ
- 2. Apache Sparkエグゼキュータの人数
- 3. エグゼキュータのSpark Object(シングルトン)シリアライズ
- 4. SparkエグゼキュータのログインIntelliJ IDEA
- 5. SparkアプリケーションのエグゼキュータIPを知るには?
- 6. Sparkエグゼキュータ上での並行タスク
- 7. Hadoop/Sparkでのマルチスレッド化
- 8. Spark scalaのエグゼキュータ間でオブジェクトをブロードキャストする方法は?
- 9. Sparkエグゼキュータの最大メモリ制限
- 10. Sparkでは、2人のエグゼキュータの間でデータを共有できますか?
- 11. Spark:パーティションではなくエグゼキュータのセットアップ作業を行う
- 12. Sparkアプリケーションは1つのエグゼキュータのみを使用します
- 13. Apache Spark:エグゼキュータでパーティションを処理する方法
- 14. カスタムStatsDでエグゼキュータを設定する方法Sparkメトリックシンク
- 15. Sparkでエグゼキュータとドライバにカスタムlog4jプロパティを使用する方法
- 16. python sparkがエグゼキュータのhttpサーバにアクセスできない
- 17. Spark:エグゼキュータを起動するリソースファイルパスを送信する
- 18. Sparkで特定のエグゼキュータに1つのパーティションを保持する方法は?
- 19. 各Sparkエグゼキュータのカスタムjava.rmi.server.hostnameを設定します。
- 20. Sparkエグゼキュータが「java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver」エラーをスローしています
- 21. Spark Streamingアプリケーションのエグゼキュータの数を設定する
- 22. spark on yarnのエグゼキュータの最小ヒープサイズを変更する
- 23. 私のSpark Appは1人のエグゼキュータだけで動作しているのはなぜですか?
- 24. spark-shell ERROR YarnScheduler:エグゼキュータが失われました
- 25. Spark Structured StreamingエグゼキュータとKafkaパーティション間のマッピングの説明
- 26. (YARNクライアントモードで)クラッシュした後にSparkエグゼキュータを再起動する方法はありますか?
- 27. clojureは "マルチスレッド"ですか?
- 28. OnTangoImageAvailableEventHandler()はマルチスレッドですか?
- 29. tesseract 3.00はマルチスレッドですか?
- 30. マルチスレッドは遅いですか?