總結命令行06:Spark

啓動命令行:spark-shell

啓動spark:sbin/start-all.sh -> start-master.sh -> start-slaves.sh

spark提交任務的過程

bin/spark-submit --class cn.itcast.spark.WordCount --master spark://server:7077 --executor-memory 2g --total-executor-cores 4

spark-sql:啓動命令---- ./spark-sql --master spark://server:7077 --driver-class-path /home/hadoop/apps/hive/lib/mysql-connector-java-5.1.34.jar

備註:spark-sql裏不能創建table,其他都可以。出現字符集問題。hive中字符集沒問題都可以操作。估計是同一種字符集不能同時被兩種軟件兼容

啓動spark-shell:

apps/spark/bin/spark-shell



RDD中兩種算子:
transformation轉換,是延遲加載的

常用的Transformation

轉換

含義

map(func)

返回一個新的RDD,該RDD由每一個輸入元素經過func函數轉換後組成

filter(func)

返回一個新的RDD,該RDD由經過func函數計算後返回值爲true的輸入元素組成

flatMap(func)

類似於map,但是每一個輸入元素可以被映射爲0或多個輸出元素(所以func應該返回一個序列,而不是單一元素)

mapPartitions(func)

類似於map,但獨立地在RDD的每一個分片上運行,因此在類型爲TRDD上運行時,func的函數類型必須是Iterator[T] => Iterator[U]

mapPartitionsWithIndex(func)

類似於mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型爲TRDD上運行時,func的函數類型必須是

(Int, Interator[T]) => Iterator[U]

sample(withReplacement, fraction, seed)

根據fraction指定的比例對數據進行採樣,可以選擇是否使用隨機數進行替換,seed用於指定隨機數生成器種子

union(otherDataset)

對源RDD和參數RDD求並集後返回一個新的RDD

intersection(otherDataset)

對源RDD和參數RDD求交集後返回一個新的RDD

distinct([numTasks]))

對源RDD進行去重後返回一個新的RDD

groupByKey([numTasks])

在一個(K,V)RDD上調用,返回一個(K, Iterator[V])RDD

reduceByKey(func, [numTasks])

在一個(K,V)RDD上調用,返回一個(K,V)RDD,使用指定的reduce函數,將相同key的值聚合到一起,與groupByKey類似,reduce任務的個數可以通過第二個可選的參數來設置

aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])

sortByKey([ascending], [numTasks])

在一個(K,V)RDD上調用,K必須實現Ordered接口,返回一個按照key進行排序的(K,V)RDD

sortBy(func,[ascending], [numTasks])

sortByKey類似,但是更靈活

join(otherDataset, [numTasks])

在類型爲(K,V)(K,W)RDD上調用,返回一個相同key對應的所有元素對在一起的(K,(V,W))RDD

cogroup(otherDataset, [numTasks])

在類型爲(K,V)(K,W)RDD上調用,返回一個(K,(Iterable<V>,Iterable<W>))類型的RDD

cartesian(otherDataset)

笛卡爾積

pipe(command, [envVars])

coalesce(numPartitions)

repartition(numPartitions)

repartitionAndSortWithinPartitions(partitioner)

常用的Action

動作

含義

reduce(func)

通過func函數聚集RDD中的所有元素,這個功能必須是課交換且可並聯的

collect()

在驅動程序中,以數組的形式返回數據集的所有元素

count()

返回RDD的元素個數

first()

返回RDD的第一個元素(類似於take(1)

take(n)

返回一個由數據集的前n個元素組成的數組

takeSample(withReplacement,num, [seed])

返回一個數組,該數組由從數據集中隨機採樣的num個元素組成,可以選擇是否用隨機數替換不足的部分,seed用於指定隨機數生成器種子

takeOrdered(n[ordering])

saveAsTextFile(path)

將數據集的元素以textfile的形式保存到HDFS文件系統或者其他支持的文件系統,對於每個元素,Spark將會調用toString方法,將它裝換爲文件中的文本

saveAsSequenceFile(path)

將數據集中的元素以Hadoop sequencefile的格式保存到指定的目錄下,可以使HDFS或者其他Hadoop支持的文件系統。

saveAsObjectFile(path)

countByKey()

針對(K,V)類型的RDD,返回一個(K,Int)map,表示每一個key對應的元素個數。

foreach(func)

在數據集的每一個元素上,運行函數func進行更新。


熟悉以上的所有算子!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章