我正在火花数据框中加载CSV数据,并将void DoTest1();
bool TryTest2();
bool TryTest3();
选项设置为inferSchema
。虽然我的CSV文件的架构总是相同,但我知道确切的架构。
手动提供架构而不是推断架构是一个好主意吗?显式提供架构是否会提高性能?
答案 0 :(得分:2)
是的,这很好。 Schema Infter将导致该文件被读取两次 - 一次用于Schema Infer,第二次用于读入Dataset。
来自DataFrameReader
的Spark代码 - 类似于DataStreamReader
:
此功能将通过输入一次以确定输入 如果启用
inferSchema
,则为架构。为了避免经历 整个数据一次,禁用inferSchema
选项或指定 模式显式使用schema
。
但是,维护100个数据集的架构可能很困难,每个数据集有200列。您还应该考虑可维护性 - 因此,典型的答案将是 - 它取决于:)对于不那么大的模式或不那么困难的推断,但对于大文件,我建议使用用代码编写的自定义模式