私はスパークアプリケーションを持っています。 Oracleからのデータをデータフレームに読み込んでいます。私はそれをjavaRDDに変換し、savingAsTExtをhdfsに変換しています。 私はこれを8ノードのクラスタ上で実行しています。私はspark-webUIで仕事を見るとき。私はそれがわずか2コンテナと2 CPUを得ていることがわかります。スパークジョブが得られませんクラスターに十分なコンテナ
私はoracleから5つのテーブルを読んでいます。各テーブルには約500万行があります。データサイズは約80GBです。
spark-submit --class "oracle.table.join.JoinRdbmsTables" --master yarn --deploy-mode cluster oracleData.jar
はまた、私は使用:
糸--deployモードクラスタ--num-キュータ40 oracleDataWrite --master --class "oracle.table.join.JoinRdbmsTablesを" スパーク提出します.jar
私は40のコンテナが仕事に割り当てられるのを見ることができました。しかし、私はアクティブな仕事 on web-uiしか見ることができませんでした。
私は別のスパークアプリケーションを持っています。どの20GBのテキストファイルを読み込んで、次に私はいくつかのデータの処理とhdfsに保存しています。私は約64のコンテナとcpusで割り当てられているのがわかります。
spark-submit --class "practice.FilterSave" --master yarn --deploy-mode cluster batch-spark-0.0.1-SNAPSHOT-jar-with-dependencies.jar mergedData.json
両者の差がある:: - >>最初のために、私は、データフレームを使用しSQLContextを使用していながら、私はsparkJavaContextを使用しています第二のアプリケーションのために。
注:私は両方ともエラーを表示していません。ここ
iが5テーブル
Map<String, String> options = new HashMap();
options.put("driver", "oracle.jdbc.driver.OracleDriver");
options.put("url", "XXXXXXX");
options.put("dbtable", "QLRCR2.table1");
DataFrame df=sqlcontext.load("jdbc", options);
//df.show();
JavaRDD<Row> rdd=df.javaRDD();
rdd.saveAsTextFile("hdfs://path");
Map<String, String> options2 = new HashMap();
options2.put("driver", "oracle.jdbc.driver.OracleDriver");
options2.put("url", "XXXXXXX");
options2.put("dbtable", "QLRCR2.table2");
DataFrame df2=sqlcontext.load("jdbc", options);
//df2.show();
JavaRDD<Row> rdd2=df2.javaRDD();
rdd2.saveAsTextFile("hdfs://path");
をロードするために使用しているコードの一部である任意のヘルプが理解されるであろう:)
をチェックアウトし、別のものです。答えるためのThanx。しかし、私はこのことを認識しています。あなたが私の2番目のアプリケーションを検討しているなら、指揮命令にnum-executersは言及していません。それは入力のサイズに基づいて割り当てられます。しかし、最初のアプリケーションでは十分ではなく、2になってしまったので、私は実行者の乱数を与えました。ジョブは順番に実行されています。どうしてか分かりません :( –