使用 csv 创建 table 与从另一个 table 创建有区别吗?

Is there a difference in creating tables with csv vs. from another table?

我在 Microsoft Azure Databricks 中使用以下代码创建了一个 table(但是,我认为这可以在任何 sql 环境中转换):

CREATE TABLE employee_data_csv (
column1,
column2,
column3 )
USING csv
OPTIONS (path "C:/pathway/xxxx", header "true", mode "FAILFAST")

有人告诉我用 USING csv 方法创建 table 会影响性能。有人建议我使用上面创建的 table 并像这样创建另一个 table:

CREATE TABLE employee_data
Select column1, column2, column3
FROM employee_data_csv

我没有注意到任何速度改进。这两个 table 或方法之间是否有任何性能变化?第二步是必须的吗?

由于数据为 CSV 格式,因此您需要像创建 table 时一样提供格式。

CTAS(将 table 创建为 select)不会转换基础格式,这是您需要提供的内容。

速度优势取决于几个因素。数据集大小、查询类型和集群大小都会对读取性能产生影响。

您可以运行以下SQL单元格来验证格式:

%sql
desc extended employee_data

Provider 字段将说明文件格式,例如本例中为 .csv。

要转换为镶木地板,您可以运行以下操作:

CREATE TABLE employee_data USING PARQUET as 
Select column1, column2, column3
FROM employee_data_csv