推断模式与在spark数据帧中加载CSV文件数据时显式传递模式

时间:2017-08-09 08:32:00

标签: csv apache-spark spark-dataframe

我正在火花数据框中加载CSV数据,并将void DoTest1(); bool TryTest2(); bool TryTest3(); 选项设置为inferSchema。虽然我的CSV文件的架构总是相同,但我知道确切的架构。

手动提供架构而不是推断架构是一个好主意吗?显式提供架构是否会提高性能?

1 个答案:

答案 0 :(得分:2)

是的,这很好。 Schema Infter将导致该文件被读取两次 - 一次用于Schema Infer,第二次用于读入Dataset。

来自DataFrameReader的Spark代码 - 类似于DataStreamReader

  

此功能将通过输入一次以确定输入   如果启用inferSchema,则为架构。为了避免经历   整个数据一次,禁用inferSchema选项或指定   模式显式使用schema

Link to code

但是,维护100个数据集的架构可能很困难,每个数据集有200列。您还应该考虑可维护性 - 因此,典型的答案将是 - 它取决于:)对于不那么大的模式或不那么困难的推断,但对于大文件,我建议使用用代码编写的自定义模式