美文网首页
RDD转换为DataFrame

RDD转换为DataFrame

作者: 起个什么呢称呢 | 来源:发表于2018-08-06 15:17 被阅读113次

    Spark SQL它支持两种不同的方式转换已经存在的RDD到DataFrame

    1.反射(Java中的概念,scala是隐式转换)

    2.运行编程接口

      用反射去推倒出来RDD里面的schema。这个方式简单,但是不建议使用,因为在工作当中,使用这种方式是有限制的

      对于以前的版本来说,case class最多支持22个字段如果超过了22个字段,我们就必须要自己开发一个类,实现product接口才行。因此这种方式虽然简单,但是不通用;因为生产中的字段是非常非常多的,是不可能只有20来个字段的。

    反射

    创建一个DataFrame,使用编程的方式 这个方式用的非常多。通过编程方式指定schema ,对于第一种方式的schema其实定义在了case class里面了。

    当我们的case class不能提前定义(因为业务处理的过程当中,你的字段可能是在变化的),因此使用case class很难去提前定义。

    使用该方式创建DF的三大步骤:

    1.从原有的RDD抽样构建新的行RDD

    2.用一个结构类型来创建模式,这个模式与第1步中创建的RDD中的行结构相匹配。

    3.通过SparkSession提供的createDataFrame方法将模式应用到行的RDD。创建模式由StructType表示匹配的行结构在步骤1中创建的抽样

    编程接口 生产schema DataFram创建

    最后的例子是将schema 和dataframe分开,增加代码的复用性。业务需求是不断在更新中。这样会减少不必要的工作量

    相关文章

      网友评论

          本文标题:RDD转换为DataFrame

          本文链接:https://www.haomeiwen.com/subject/haqgvftx.html