【问题标题】:How to read CSV files directly into spark DataFrames without using databricks csv api ?如何在不使用 databricks csv api 的情况下将 CSV 文件直接读入 spark DataFrames?
【发布时间】:2016-07-05 02:17:17
【问题描述】:

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

【问题讨论】:

  • databricks csv api 有什么问题?
  • @Himaprasoon ,databricks csv api 没什么问题 ..实际上我必须编写认证 hortonworks hdpcd spark ,在考试中他们不提供 databricks api ..只有我们可以使用的 spark 内置 api...
  • 我的回答有帮助吗?如果没有,你发现了什么?

标签: scala apache-spark apache-spark-sql spark-dataframe


【解决方案1】:

似乎从 scala 2.11.x 开始,arity limit issue 已修复。请看https://issues.scala-lang.org/browse/SI-7296

要在 my answer,它使用 extends Product 并覆盖方法 productArityproductElementcanEqual (that:Any)

【讨论】:

    【解决方案2】:

    我也对此进行了研究,并最终编写了一个 python 脚本来为 parse(line) 函数和模式定义生成 scala 代码。是的,这可能会变成一段冗长的代码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2021-10-30
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2016-01-01
      相关资源
      最近更新 更多