RDD API
rdd的获取途径:
(1)利用sc.textFile()从本地文件系统或者hdfs文件系统获得
(2)通过已存在的rdd 进行转换,如map运算
(3)将已有的集合,通过调用sparkcontex的parallelize实现
rdd_test.map(lambda x:(x[1],1)).reduceByKey(lambda x,y:x+y).collect()
使用RDD API进行数据统计,主要是使用map配合reduceByKey。RDD的数据类型只有数据,没有定义Schema。也就是说rdd没有定义字段名,所以只能使用位置来指定某一个字段。如上面代码中的x[1],上面代码的意思是统计x[1]字段每个值的数量。
在得到rdd后,可以用take查看一下数据的格式,以逗号还是空格分隔,是否字段用双引号进行括起来,然后再进行下一步的处理。
若字段用双引号括起来,可以用下面的语句去除双引号,"""表示转义字符,即表示双引号
rdd_test=raw_rdd_test.map(lambda x:x.replace("\"",""))
若字段之间以空格分隔,则用下面的语句进行处理,"\t"表示空格
lines=rdd_test.map(lambda x:x.split("\t"))
DataFrame API
DataFrame是一种分布式数据集合,每一条数据都由几个命名字段组成。spa