val textFile = sc.textFile("file:///usr/local/wordcount/word.txt")
textFile.first()
加载本地文件,必须采用“file:///”开头的这种格式,执行上上面这条命令以后,并不会马上显示结果,因为,Spark采用惰性机制,只有遇到“行动”类型的操作,才会从头到尾执行所有操作。所以,下面我们执行一条“行动”类型的语句,就可以看到结果,
first()是一个“行动”(Action)类型的操作,会启动真正的计算过程,从文件中加载数据到变量textFile中,并取出第一行文本。
textFile.saveAsTextFile("file:///usr/local/wordcount/writeback.txt")
saveAsTextFile()是一个“行动”(Action)类型的操作,所以,马上会执行真正的计算过程。
//等价的
val textFile = sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt")
val textFile = sc.textFile("/user/hadoop/word.txt")
val textFile = sc.textFile("word.txt")
//执行行动类算子
textFile.first()
把textFile的内容写回到HDFS文件系统中(写到hadoop用户目录下)
val textFile = sc.textFile("word.txt")
textFile.saveAsTextFile("writeback.txt")
本地文件系统加载与写入到RDD
val rdd = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")
rdd.saveAsTextFile("file:///usr/local/spark/mycode/wordcount/outputFile")
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
val jsonStr = sc.textFile("file:///usr/local/spark/examples/src/main/resources/people.json")
jsonStr.foreach(println)
{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}
json文件加载到RDD中以后,在RDD中存在三个字符串。我们下面要做的事情,就是把这三个JSON格式的字符串解析出来,比如说,第一个字符串{"name":"Michael"},经过解析后,解析得到key是"name",value是"Michael"。
现在我们编写程序完成对上面字符串的解析工作。Scala中有一个自带的JSON库——scala.util.parsing.json.JSON,可以实现对JSON数据的解析。
JSON.parseFull(jsonString:String)函数,以一个JSON字符串作为输入并进行解析,如果解析成功则返回一个Some(map: Map[String, Any]),如果解析失败则返回None。因此,可以使用模式匹配来处理解析结果.
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import scala.util.parsing.json.JSON
object JSONApp {
def main(args: Array[String]) {
val inputFile = "file:///usr/local/spark/examples/src/main/resources/people.json"
val conf = new SparkConf().setAppName("JSONApp")
val sc = new SparkContext(conf)
val jsonStrs = sc.textFile(inputFile)
val result = jsonStrs.map(s => JSON.parseFull(s))
result.foreach( {r => r match {
case Some(map: Map[String, Any]) => println(map)
case None => println("Parsing failed")
case other => println("Unknown data structure: " + other)
}
}
)
}
}
参考博客:
Spark2.1.0入门:文件数据读写_厦大数据库实验室博客