如何在不使用databricks csv api的情况下直接将CSV文件读入spark DataFrame?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不使用databricks csv api的情况下直接将CSV文件读入spark DataFrame?相关的知识,希望对你有一定的参考价值。

如何在不使用databricks csv api的情况下直接将CSV文件读入spark DataFrame? 我知道有databricks csv api但我不能使用它api .. 我知道有使用case类并根据cols(0)位置映射cols但问题是我有超过22种coloumns因此我不能使用case类,因为在case类中我们只有22个coloumns的限制。我知道有structtype来定义模式,但我觉得在structype中定义40个coloumns是非常长的代码。我正在寻找使用read方法读入数据帧的东西但是在spark中我们没有直接支持csv文件我们需要解析它吗?但是如果我们有40多个cols怎么办?

答案

似乎scala 2.11.x以后arity limit issue是固定的。请看看https://issues.scala-lang.org/browse/SI-7296

要在<2.11中克服这一点,请参阅my answer,它使用extends Product和覆盖方法productArityproductElementcanEqual (that:Any)

另一答案

我也研究了这个并最终编写了一个python脚本来生成解析(行)函数和模式定义的scala代码。是的,这可能会变成一长串的代码。

如果你的数据不是太大,你可以走另一条道路:使用python pandas!启动py-spark,将数据读入pandas数据帧,然后从中创建一个spark数据帧。保存它(例如,作为镶木地板文件)。并在scala-spark中加载该镶木地板文件。

以上是关于如何在不使用databricks csv api的情况下直接将CSV文件读入spark DataFrame?的主要内容,如果未能解决你的问题,请参考以下文章

Databricks - CSV 未正确加载

Databricks 社区 - 不识别列(Csv 文件 - Python)

无法在 azure databricks 中使用 spark 读取 csv 文件

读取 csv 文件时 MS Databricks Spark 中绝对 URI 中的相对路径

通过 Python 中的 Databricks api 读取 Databricks 表?

在 ADLS2 中合并通过 DataBricks 准备的 CSV 文件