来自 SQL 的 Spark (Databricks) 非托管 table 未处理 headers
Spark (Databricks) unmanaged table from SQL not processing headers
尝试使用 SQL API 从 CSV 文件在 Spark (Databricks) 中创建非托管 table。但是第一行没有被用作 headers.
图 2,显示使用 Dataframe API 创建非托管 table 时第一行是正确的。 Dataframe 是从同一个 csv 文件加载的。
但是,图 1 表明,当从 SQL 中的 CSV 文件数据源创建非托管 table 时,不会将第一行处理为 headers。我是否遗漏了一些“headers”选项?
如果是这样,那将如何编码?
数据框API
您只需按照文档中的说明提供 OPTIONS
。
在该选项块中,您可以列出与 options specific to the Spark CSV reader 匹配的 key/value 对,例如,options ('header' = 'true', 'sep' = ',')
将强制 Spark 忽略 header 行,并且将分隔符设置为逗号。您还可以将 'inferSchema' = true
添加到选项中,在这种情况下您可以省略列声明 - Spark 将为您推断它(对于小数据集没问题,但对于大数据集则不行):
create table test.test using csv
options ('header' = 'true', 'sep' = ',', 'inferSchema' = true)
location '/databricks-datasets/Rdatasets/data-001/csv/COUNT/affairs.csv'
尝试使用 SQL API 从 CSV 文件在 Spark (Databricks) 中创建非托管 table。但是第一行没有被用作 headers.
图 2,显示使用 Dataframe API 创建非托管 table 时第一行是正确的。 Dataframe 是从同一个 csv 文件加载的。
但是,图 1 表明,当从 SQL 中的 CSV 文件数据源创建非托管 table 时,不会将第一行处理为 headers。我是否遗漏了一些“headers”选项? 如果是这样,那将如何编码?
数据框API
您只需按照文档中的说明提供 OPTIONS
。
在该选项块中,您可以列出与 options specific to the Spark CSV reader 匹配的 key/value 对,例如,options ('header' = 'true', 'sep' = ',')
将强制 Spark 忽略 header 行,并且将分隔符设置为逗号。您还可以将 'inferSchema' = true
添加到选项中,在这种情况下您可以省略列声明 - Spark 将为您推断它(对于小数据集没问题,但对于大数据集则不行):
create table test.test using csv
options ('header' = 'true', 'sep' = ',', 'inferSchema' = true)
location '/databricks-datasets/Rdatasets/data-001/csv/COUNT/affairs.csv'