在 spark/scala 中加载 csv 文件的有效方法

Efficient way to load csv file in spark/scala

我正在尝试从 spark 在 scala 中加载一个 csv 文件。我看到我们可以使用以下两种不同的语法:

  sqlContext.read.format("csv").options(option).load(path)
  sqlContext.read.options(option).csv(path)

这两者有什么区别,哪个性能更好? 谢谢

没有区别

那么为什么两者都存在?

  • .format(fmt).load(path) 方法是一种灵活的 可插入 API 允许添加更多格式而无需重新编译 spark - 您可以注册别名自定义数据源实现并让 Spark 使用它们; "csv" used to be 这样的自定义实现(在打包的 Spark 二进制文件之外),但它现在是项目的一部分
  • "built-in" 数据源(如 csvparquetjson...)有 shorthand 方法,这使得代码有点更简单(并在编译时验证)

最终,他们都创建了一个 CSV 数据源并使用它来加载数据。

底线,对于任何支持的格式,您应该选择 "shorthand" 方法,例如csv(path)