Spark運算元:RDD基本轉換操作map、flatMap
import org.apache.spark._
object rdd_test {
System.setProperty("hadoop.home.dir", "C:\\hadoop_home\\")
def main(args: Array[String]) {
/*
* Spark運算元:RDD基本轉換操作之 map、flatMap、distinct學習筆記
*
*/
val sparkConf = new SparkConf().setMaster("local").setAppName("RDD_TEST_chenxun")
val sc = new SparkContext(sparkConf)
val lines = sc.textFile("D:\\spark_data\\data.txt")
for (v <-lines) println(v)
/*
hello chen
hello spark
hello hadoop
*/
//map操作
val mapresult1 = lines.map(line => line.split(" ")).collect()
//Array[Array[String]] = Array(Array(hello, chen), Array(hello, spark), Array(hello, hadoop))
/*
將一個RDD中的每個資料項,通過map中的函式對映變為一個新的元素。
輸入分割槽與輸出分割槽一對一,即:有多少個輸入分割槽,就有多少個輸出分割槽
mapresult.collect()結果是:(後面會比較flatMap的結果有什麼不同)
Array[Array[String]] = Array(Array(hello, chen), Array(hello, spark), Array(hello, hadoop))
可以用下面的方法輸出
for (elem <- lines.map(line => line.split(" ")).collect()) {
for(v <- elem){
print(v + " ")
}
println()
}
*/
//flatMap 操作
val mapresult2 = lines.flatMap(line => line.split(" ")).collect()
//Array[String] = Array(hello, chen, hello, spark, hello, hadoop)
/* 屬於Transformation運算元,第一步和map一樣,最後將所有的輸出分割槽合併成一個。
Array[String] = Array(hello, chen, hello, spark, hello, hadoop)
for(elem <- mapresult2){
println(elem)
}
*/
//計算每一行的長度
val lineLengths = lines.map(s => s.length)
for( v <- lineLengths){
println(v)
}
val totalLength = lineLengths.reduce((a, b) => a + b)
println(totalLength)
}
}
相關文章
- Spark----RDD運算元分類 DAGSpark
- 【Spark篇】---Spark中Transformations轉換運算元SparkORM
- Spark RDD運算元(八)mapPartitions, mapPartitionsWithIndexSparkAPPIndex
- RDD轉換操作運算元 --- zip(k-v)、join(k)、cogroup(k)、lookup(k)
- spark RDD運算元(五)之鍵值對聚合操作combineByKeySpark
- Spark運算元:RDD行動Action操作學習–countByKey、foreach、sortBySpark
- spark RDD textFile運算元 分割槽數量詳解Spark
- Spark入門(四)--Spark的map、flatMap、mapToPairSparkAPTAI
- Spark運算元:統計RDD分割槽中的元素及數量Spark
- spark-運算元-分割槽運算元Spark
- spark的基本運算元使用和原始碼解析Spark原始碼
- Spark Basic RDD 操作示例Spark
- Spark SQL中的RDD與DataFrame轉換SparkSQL
- 【Spark篇】---Spark中控制運算元Spark
- 【Spark篇】---Spark中Action運算元Spark
- Spark運算元篇 --Spark運算元之aggregateByKey詳解Spark
- Spark運算元篇 --Spark運算元之combineByKey詳解Spark
- spark: RDD與DataFrame之間的相互轉換Spark
- 【Spark篇】---SparkStreaming運算元操作transform和updateStateByKeySparkORM
- 【Spark篇】---Spark中transformations運算元二SparkORM
- Spark常用Transformations運算元(一)SparkORM
- Spark常用Transformations運算元(二)SparkORM
- Spark效能調優-RDD運算元調優篇(深度好文,面試常問,建議收藏)Spark面試
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- spark一些常用運算元Spark
- 【TVM系列三】運算元轉換呼叫流程
- spark學習筆記--RDD鍵對操作Spark筆記
- Spark RDD APISparkAPI
- spark-RDDSpark
- Flink -- Operator操作運算元
- 【OpenCV】影像變換(二)邊緣檢測:梯度運算元、Sobel運算元和Laplace運算元OpenCV梯度
- Spark RDD使用詳解--RDD原理Spark
- 【轉】C++ map的基本操作和使用C++
- JDBC運算元據庫基本步驟JDBC
- Spark - [03] RDD概述Spark
- Spark效能優化:對RDD持久化或CheckPoint操作Spark優化持久化
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- Flink的DataSet基本運算元總結