- 本地文件系统的数据读写
scala> val textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")
scala> textFile.saveAsTextFile("file:///usr/local/spark/mycode/wordcount/writeback.txt")
- 分布式文件系统HDFS的数据读写
scala> val textFile = sc.textFile("hdfs:///localhost:9000/user/hadoop/word.txt")
scala> textFile.first() // 行动操作触发转换操作
scala> val textFile = sc.textFile("word.txt")
scala> textFile.saveAsTextFile("writeback.txt")
- JSON文件数据读写
JSON是一种轻量级的数据交换格式。把本地文件系统中的people.json文件加载到RDD中
scala> val jsonStr = sc.textFile("file:///usr/local/spark/examples/src/main/resource/people.json")
scala> jsonStr.foreach(println)
编写程序完成对JSON数据的解析工作。Scala中有一个自带的JSON库:scala.util.parsing.json.JSON,可以实现对JSON数据的解析。
JSON.parseFull(jsonString:String)函数,以一个JSON字符串作为输入并进行解析,如果解析成功则返回一个some(map: Map[String, Any]),如果解析失败则返回None。
在testjson.scala代码文件中输入以下内容
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 = "pathToFile"
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)
}
})
}
}
将整个程序打包成JAR包,通过spark-submit程序运行(运行后可得到结果输出信息)
$ /usr/local/spark/bin/spark-submit --class "JSONApp"
$ /usr/local/spark/mycode/json/target/scala-2.11/json-project_2.11-1.0.jar
- 读写HBase数据
HBase是google的BigTable开源实现的原版。
HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列键、列限定符和时间戳。
每个值是一个未经解释的字符串,没有数据类型。
用户在表中存储数据,每一行都有一个可排序的行键和任意多的列。
时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。
列项定符:列族里面的数据通过列限定符(或列)来定位。
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[ ]。
HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此可以视为“四维坐标”。
- 创建一个HBase表
HBase数据库安装教程:厦门大学数据库实验室
(相关读数据,写数据等暂时没看)