1.スパーク展開するには、いくつかの方法がありますが、違いは何ですか?
局所(ローカルモード):一般ローカル開発テストに使用、また、単一およびマルチスレッドローカルローカルローカルクラスタに分割されています。 スタンドアロン(トランクモード):典型的なマーテル/スレーブモードだけでなく、障害のマスター一点があることがわかる。スパーク達成HAサポートのZooKeeperを 糸(上のクラスタモード): 糸資源管理フレームワーク上で動作し、資源管理を担当する糸、スパークは、スケジューリングや計算を担当して (mesosにクラスタモード): リソースの管理を担当mesosでmesosマネージャーのフレームワークリソース上で動作する、スパークは、スケジューリングや計算を担当して クラウド(上のクラスタモード):このようAWSのEC2のように、このモデルを使用すると、AmazonのS3に簡単にアクセスすることができ、スパークは、分散ストレージシステムのさまざまなサポートしています。HDFSとS3 |
どのようなテクノロジスタックコンポーネント2.スパーク、どのような機能を、どのような治療シナリオの各コンポーネント?
1)スパークコアは:、他の成分、スパークカーネルの基礎となる主あっ向け巡回グラフ、RDD、Lingage、キャッシュ、ブロードキャスト、等、及び基本的な通信フレームワークをカプセル化し、スパークの基礎です。 2)ストリーミングシステムをSparkStreamingは、データストリームのハイスループット、リアルタイムフォールトトレランスである。同様に、複数のデータソースのマップ(例えば、カフカ、水路、ツイッター、ゼロとTCPソケット)、および参加削減することができますおよびその他の複雑な操作、短いバッチジョブのシリーズへの計算の流れ。 3)スパークSQL:シャークはSparkSQLの前身である、スパークSQLの重要な特徴は、それが簡単に、開発者は、より複雑なデータ分析しながら、外部の問い合わせのためのSQLコマンドを使用するために作る、統一されたリレーショナル表とRDDに対処する能力です。 4)BlinkDB:ユーザーが照会応答時間のバランスをとることによって、データの精度を向上させることができ、大規模なデータにインタラクティブなSQLクエリを実行するための大規模並列クエリ・エンジン、許容誤差範囲内にあるデータの精度です。 いくつかは、機械学習者の認識していなくてもよいように、5)MLBaseスパークは、機械学習機械学習に焦点を当てた生態系の下部にあるしきい値ように簡単にMLbaseを使用することができます。MLlib、MLI、MLオプティマイザとMLRuntime:MLBaseは4つの部分に分かれて。 並列コンピューティングのための6)GraphX図スパーク。 |
アイデアをWORDCOUNTと3スパーク統計を実装します。
1)構成オブジェクトAppNameパラメータセットを作成し、属性値のマスター 2)のポータルオブジェクトSparkContextスパークを作成します 3)コールflatMapは、各ラインセットタイプリスト[文字列]のデータに変換します マップ対応タプルを用いた元素マッピング法の4)一覧 5)重合は、統計を得るために、タプルデータ集約機能を実行しました |
object WordCount { def main(args: Array[String]): Unit = { new SparkContext("local", "wordcount", new SparkConf().set("log4j.rootCategory", "WARN, console"))context.textFile("data/words.txt").flatMap(_.split(" +")).map((_, 1)).reduceByKey(_ + _).foreach(println) } } |
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;
import java.util.Arrays;
import java.util.Iterator;
public class WordCount {
public static void main(String[] args) {
JavaSparkContext context = new JavaSparkContext("local", "wordcount", new SparkConf());
context.setLogLevel("ERROR");
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("wc");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> lines = sc.textFile("./data/words");
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterator<String> call(String line) throws Exception {
return Arrays.asList(line.split(" ")).iterator();
}
});
JavaPairRDD<String, Integer> pairWords = words.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) throws Exception {
return new Tuple2<>(s, 1);
}
});
JavaPairRDD<String, Integer> result = pairWords.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
});
result.foreach(new VoidFunction<Tuple2<String, Integer>>() {
@Override
public void call(Tuple2<String, Integer> tp) throws Exception {
System.out.println();
}
});
sc.stop();
}
} |