当前位置:  开发笔记 > 数据库 > 正文

在Spark中为具有1500列的表定义DataFrame模式

如何解决《在Spark中为具有1500列的表定义DataFrame模式》经验,为你挑选了1个好方法。

我在SQL Server中有大约1500列的表。我需要从该表中读取数据,然后将其转换为正确的数据类型格式,然后将记录插入Oracle DB。

为表中包含1500多个列的这种类型的表定义架构的最佳方法是什么。除了对列名和数据类型进行硬编码之外,还有其他选择吗?

    使用 Case class

    使用StructType

使用的Spark版本为1.4



1> Ram Ghadiyar..:

对于这种类型的要求。我会提供case类方法来准备数据框

是的,有一些局限性,例如生产率,但我们可以克服...您可以像<版本2.11的以下示例所示进行操作:

准备一个案例类extends Product并覆盖方法。

喜欢...

productArity():Int:这将返回属性的大小。在我们的例子中,它是33。因此,我们的实现如下所示:

productElement(n:Int):Any:给定一个索引,这将返回属性。作为保护,我们还有一个默认情况,该情况会引发IndexOutOfBoundsException异常:

canEqual (that:Any):Boolean:这是三个函数中的最后一个,当对类进行相等检查时,它作为边界条件:


您可以参考该学生案例类的示例实现,其中包含33个字段

此处示例学生数据集描述

另外一个选项 :

使用StructType定义架构并创建数据框。(如果您不想使用spark csv api)

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有