如何在不使用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
和覆盖方法productArity
,productElement
,canEqual (that:Any)
我也研究了这个并最终编写了一个python脚本来生成解析(行)函数和模式定义的scala代码。是的,这可能会变成一长串的代码。
如果你的数据不是太大,你可以走另一条道路:使用python pandas!启动py-spark,将数据读入pandas数据帧,然后从中创建一个spark数据帧。保存它(例如,作为镶木地板文件)。并在scala-spark中加载该镶木地板文件。
以上是关于如何在不使用databricks csv api的情况下直接将CSV文件读入spark DataFrame?的主要内容,如果未能解决你的问题,请参考以下文章
Databricks 社区 - 不识别列(Csv 文件 - Python)
无法在 azure databricks 中使用 spark 读取 csv 文件
读取 csv 文件时 MS Databricks Spark 中绝对 URI 中的相对路径