RDD、DataFrame、DataSet

在Spark中这三种数据格式十分重要,是使用Spark的基础中的基础。自己刚开始也一直比较模糊,所以写篇文章记录一下作为备用。
DataSet算子合集
整体算子

RDD和DataFrame

RDD、DataFrame、DataSet_第1张图片
上图左侧的RDD[Person]虽然以Person为类型参数,但是对Spark框架来说它无法解析得到Person的内部具体结构,但是我们可以通过代码具体控制每个元素的转化。而DataFrame增加一个schema结构,里面记录了每列的字段类型和名称。
所以:DataFrame=RDD[Row]+schema;DataFrame = DataSet[Row]
注:这里的Row类型是什么?其实一个模糊指代类型就是指代一行。如在DataFrame中Spark框架可以解析到每个字段的类型,但是每一行也可以也是各结构,这个结构就是Row类型。后面提到的DataSet就是将这个Row类型明确了!

转换

Rdd转DataFrame的原因:将RDD转换成DataFrame之后,借用SparkSql和HQL语句快速统计和查询。
RDD转化为DataFrame的两种方式 :推荐第二种方式,动态编程。
DataFrame转RDD的原因:解决一些使用sql难以处理的统计分析;将数据写入Mysql
DataFrame转Rdd直接调用.rdd算子即可

转换备忘版

你可能感兴趣的:(Hadoop,大数据,spark)