2017-09-11 14 views
0

私はデータベースからSQLクエリを実行するためにSpark DataFrameReaderを使用します。実行されたクエリごとに、SparkSessionが必要です。私がしたいのは、各JavaPairRDDがマップを実行するため、このRDDのパラメータを使用してSQLクエリを呼び出すことです。これは、各ラムダでSparkSessionを渡す必要があることを意味します。これは悪い設計のようです。このような問題に共通するアプローチは何ですか?Apache Spark distributed sql

みたいに見えることができます:私は今、データをロードする方法

roots.map(r -> DBLoader.getData(sparkSession, r._1)); 

JavaRDD<Row> javaRDD = sparkSession.read().format("jdbc") 
      .options(options) 
      .load() 
      .javaRDD(); 
+0

roots.map(r - > DBLoader.getData(sparkSession、r._1));正しいアプローチではありません。一般的に、セッションをラムダに渡す必要はありません。 – BDR

答えて

0
ビッグデータの目的は、データの局所性を持ち、どこにデータが存在するあなたのコードを実行できるようにすることです

テーブルの大きな負荷をメモリやローカルディスク(キャッシュ/持続)に入れても構いませんが、連続するリモートのjdbcクエリがその目的を無効にします。

関連する問題