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

问题描述 投票:1回答:2

如何在不使用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 apache-spark apache-spark-sql spark-dataframe
2个回答
1
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.