Spark-csv 数据源:推断数据类型

Ole*_*ikh 5 dataframe apache-spark

我正在尝试使用 Spark-CSV 包(https://github.com/databricks/spark-csv)将csv文件读入Spark DataFrames.

一切正常,但所有列都假定为StringType.

如 Spark SQL 文档 ( https://spark.apache.org/docs/latest/sql-programming-guide.html ) 中所示,对于 JSON 等内置源,可以自动推断具有数据类型的模式。

可以自动推断 CSV 文件中的列类型吗?

小智 7

从 Spark 2 开始,我们可以像这样使用选项 'inferSchema': getSparkSession().read().option("inferSchema", "true").csv("YOUR_CSV_PATH")


dpe*_*ock 3

不幸的是,目前不支持此功能,但这将是一个非常有用的功能。目前它们必须在 DLL 中声明。从文档中我们可以得到:

header:设置为 true 时,文件的第一行将用于命名列,并且不会包含在数据中。所有类型都将假定为字符串。默认值为 false。

这就是你所看到的。

请注意,可以在查询时推断模式,例如

select sum(mystringfield) from mytable
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我也是这么想的,谢谢你的证实。我同意 - 这将是一个非常好的功能。精确的类型匹配可能不可行,但各种启发式方法可能是可能的:基于列中前 N 条记录的类型、基于随机 N 条记录、基于 N/大小分数等 (2认同)