如何使用 spark-shell 读取 .csv 文件

Posted

技术标签:

【中文标题】如何使用 spark-shell 读取 .csv 文件【英文标题】:How to read .csv file using spark-shell 【发布时间】:2016-03-24 17:06:11 【问题描述】:

我正在使用带有预构建 hadoop 的独立 spark。我想知道我应该导入什么库才能读取 .csv 文件?

我从 github 找到了一个库:https://github.com/tototoshi/scala-csv 但是当我按照自述文件中的说明输入 import com.github.tototoshi.csv._ 时,它不起作用。在导入之前我应该​​做其他事情,比如先使用 sbt 构建它吗?我尝试使用 sbt 构建,但它也不起作用(我所做的是按照自述文件最后一部分中的步骤,将代码克隆到我的本地计算机,安装 sbt 并执行 ./sbt,但不起作用) .

【问题讨论】:

【参考方案1】:

只需启用 spark-csv 包,例如

spark-shell --packages com.databricks:spark-csv_2.10:1.4.0

这将启用csv 格式,例如

val df = sqlContext.read.format("csv").load("foo.csv")

如果你有标题

val df = sqlContext.read.format("csv").option("header", "true").load("foo.csv")

所有选项请参见 github repo https://github.com/databricks/spark-csv

【讨论】:

【参考方案2】:

您应该重新表述您的问题以解释它不起作用的原因,否则人们会继续投票。

如果您想使用 spark-shell,您可以使用“--packages”(如 @the.malkolm)提供要在 shell 中动态导入的包列表。我认为该解决方案仍然不完整,因为您不是在问如何在 spark-shell 中修复它,而是在问如何在 sbt 中编译。我之前用过https://github.com/tototoshi/scala-csv 和maven。我认为 sbt 中的情况并没有太大的不同,除了在这里你必须将以下行添加到你的 build.sbt 然后 ./sbt。

libraryDependencies += "com.github.tototoshi" %% "scala-csv" % "1.3.0"

你可以试试databricks提供的库和sbt这行

libraryDependencies += "com.databricks" %% "spark-csv_2.10" % "1.4.0"

如果这不起作用,我建议您更好地查看http://www.scala-sbt.org/documentation.html,因为这可能不是使用哪个库的问题,而是如何构建一个 sbt 项目。

【讨论】:

我觉得 com.databricks 库还不错,我现在可以毫无问题地使用了。谢谢!

以上是关于如何使用 spark-shell 读取 .csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spark-avro 包从 spark-shell 读取 avro 文件?

spark-shell读取parquet文件

如何使用Spark Structured Streaming连续监视目录

在独立/主从 spark-shell 中读取 Parquet 时的不同行为

spark-shell读取.log文件获取日志信息后,怎么进行分析?比如统计包含404的行数

如何在 Apache Spark 预构建版本中添加任何新库,如 spark-csv