我尝试使用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文件中的列类型吗?
答案 0 :(得分:3)
不幸的是,目前还没有支持,但这将是一个非常有用的功能。目前它们必须在DLL中声明。从我们的文档:
header:当设置为true时,第一行文件将用于命名列,不会包含在数据中。所有类型都将被假定为字符串。默认值为false。
这就是你所看到的。
请注意,可以在查询时推断架构,例如
select sum(mystringfield) from mytable
答案 1 :(得分:2)
从Spark 2开始,我们可以使用选项'inferSchema',如下所示: getSparkSession()。read()。option(“inferSchema”,“true”)。csv(“YOUR_CSV_PATH”)