RDD定义
RDD全称是Resilient Distributed Dataset, 是spark的核心抽象层,通过它可以读取多种文件,这里演示如何读取hdfs文件。所有spark的工作都是发生在RDD上,比如创建新的RDD,转换已有的RDD,对现有的RDD计算求得结果。
RDD在spark中是不可变的(immutable)对象集合,RDD可以被划分成多个分区,存放在不同的节点。
创建RDD
有两种方法,一种是加载外部的数据集,比如下面加载HDFS的文件, 运行在scalar-shell中:
val textFile = sc.textFile("hdfs://namenode-host:9000/input/dean/obd_hdfs-writer-4-9-1447126914492.log")
textFile.count()
res1: Long = 3574
另一种方法是在driver program中用SparkContext的paralleize方法。这里暂时不讨论。
读取JSON文件
上面的log文件内容其实是json格式的,所以可以换种读法:
scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext: org.apache.spark.sql.SQLContext = org.apache.spark.sql.SQLContext@2f92b5a1
scala> val path = "hdf