Sparkコアプログラミング-RDD作成操作
2321 ワード
現在、2つのタイプのベースRDDがあります.1つはパラレルセット(Parallelized Collections)であり、すでに存在するscalaセットを受信し、その後、様々なパラレル計算を行います.もう1つは外部ストレージから作成されたRDDであり、外部ストレージはテキストファイルまたはHDFSであってもよいし、HadoopのインタフェースAPIであってもよい.
一、並列化集合作成操作
SparkContextのparallelizeメソッドにより,既に存在するscala集合上に作成されたSeqオブジェクトは,集合のオブジェクトがコピーされ,並列に動作可能な分散データセット(RDD)が作成される.SparkContextクラスではparallelizeとmakeRDDの2つの並列化セット作成操作が実現されています. parallelize(seq:Seq[T], numSlices:Int = defaultParallelisem):RDD[T] makeRDD(seq:Seq[(T, Seq[String])]):RDD[T] makeRDD(seq:Seq[T], numSlices:Int = defaultParallelisem):RDD[T]
二、外部ストレージ作成操作
Sparkは、Hadoopがサポートするストレージリソースを、ローカルファイル、HDFS、Cassandra、HBAseなどのRDDに変換することができ、Sparkはテキストファイル、Sequence Files、およびHadoop InputFormatフォーマットをサポートする. textFile(path:String, minPartitions:Int = defaultMinPartitions):RDD[String]
textFile操作を使用すると、ローカルファイルまたはHDFSファイルをRDDに変換できます.この操作は、textFile(「/my/directory」)などのファイルディレクトリ全体の読み取りをサポートします.ファイルは、テキストまたは圧縮ファイルであってもよい.注意すべき点は2つあります.すべてのノードがファイルにアクセスできる必要があります.そうしないと、実行中に「FileNotFoundException」と報告されます.2デフォルトでは、各データブロックに1つのパーティションを割り当て、ユーザーが表示するより多くのパーティションを指定することもできますが、HDFSファイルのデータブロック数を少なくすることはできません.
注意:textFileはパーティションをサポートし、モードマッチングをサポートします.例えば、D:wordcountディレクトリの下のtempの先頭の給をRDDに変換します.
複数のパスをカンマで区切るには、次のようにします.
一、並列化集合作成操作
SparkContextのparallelizeメソッドにより,既に存在するscala集合上に作成されたSeqオブジェクトは,集合のオブジェクトがコピーされ,並列に動作可能な分散データセット(RDD)が作成される.SparkContextクラスではparallelizeとmakeRDDの2つの並列化セット作成操作が実現されています.
// SparkConf
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
// JavaSparkContext
JavaSparkContext sc = new JavaSparkContext(conf);
// List
List data = Arrays.asList(1, 2, 3, 4, 5);
// RDD, ,
JavaRDD distData = sc.parallelize(data, 10);
// parallelize , 。( Scala Api )
// 1 10 master ,11 15 slave1 slave2
var collect = Seq((1 to 10, Seq("master")), (11 to 15, Seq("slave1","slave2")))
var rdd = sc.makeRDD(collect)
// 1
rdd.preferredLocations(rdd.partitions(0))
二、外部ストレージ作成操作
Sparkは、Hadoopがサポートするストレージリソースを、ローカルファイル、HDFS、Cassandra、HBAseなどのRDDに変換することができ、Sparkはテキストファイル、Sequence Files、およびHadoop InputFormatフォーマットをサポートする.
textFile操作を使用すると、ローカルファイルまたはHDFSファイルをRDDに変換できます.この操作は、textFile(「/my/directory」)などのファイルディレクトリ全体の読み取りをサポートします.ファイルは、テキストまたは圧縮ファイルであってもよい.注意すべき点は2つあります.すべてのノードがファイルにアクセスできる必要があります.そうしないと、実行中に「FileNotFoundException」と報告されます.2デフォルトでは、各データブロックに1つのパーティションを割り当て、ユーザーが表示するより多くのパーティションを指定することもできますが、HDFSファイルのデータブロック数を少なくすることはできません.
// data.txt RDD
JavaRDD distFile = sc.textFile("data.txt");
注意:textFileはパーティションをサポートし、モードマッチングをサポートします.例えば、D:wordcountディレクトリの下のtempの先頭の給をRDDに変換します.
JavaRDD distFile = sc.textFile("D:\\wordcount\\temp*");
複数のパスをカンマで区切るには、次のようにします.
JavaRDD distFile = sc.textFile("D:\\wordcount\\temp1,D:\\wordcount\\temp2",4);