美文网首页
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