spark RDD与DataFrame的相互转换

一、RDD与DataFrame的区别

spark RDD与DataFrame的相互转换_第1张图片

 

  1. RDD转DataFrame原因及方式

    可以将RDD转成DataFrame之后,借用sparksql和sql以及HQL语句快速方便的使用sql语句统计和查询,比如说分组排名(row_number() over()) 分析函数和窗口函数去实现占比分析。

    将RDD转化为DataFrame有两种方式:

    方式一:通过反射推断schema 要求:RDD的元素类型必须是case class

    方式二、编程指定schema 要求:RDD的元素类型必须是Row 自己编写schema(StructType) 调用SparkSession的createDatafrmame(RDD[Row],schema)

  2. DataFrame转RDD原因及方式

    1. 解决一些使用sql难以处理的统计分析

    2. 将数据写入Mysql

           a.DataFrame的write.jdbc,仅支持四种模式:append、overwrite、ignore、default

           b.使用rdd的话,除了上述以外还支持insert 和 update操作,还支持数据库连接池 (自定 义,第三方:c3p0 hibernate mybatis)方式,批量高效将大量数据写入 Mysql

         方式一: DataFrame转换为RDD相对来说比较简单,只需要调用DataFrame的RDD算子即可

你可能感兴趣的:(Spark,spark)