与 CTAS 相比,CREATE EXTERNAL TABLE 的优缺点是什么?
What are the pros & cons of CREATE EXTERNAL TABLE compared to CTAS?
我正在尝试构建一个 Azure 数据工厂管道,该管道从 Azure 数据湖中获取数据并进行转换。
我想将转换后的数据存储在 Azure SQL 数据仓库中(作为事实和维度)。
我最终找到了两个解决方案来使数据在仓库中可用:
- 使用 CREATE EXTERNAL TABLE 并引用
.csv
文件中 Lake 中的转换数据;
- 使用 CTAS 将
.csv
文件从湖中复制到仓库中;
问题
对我来说,权衡取舍并不明显。一方面,在我看来,第一个选项避免了复制到仓库(是吗?)。但是第二个选项会提供更多选项,例如索引。
与 CTAS 相比,CREATE EXTERNAL TABLE 的优缺点是什么?
将数据登陆 DW(使用 CTAS)的主要好处是后续对该数据的查询会明显更快。您将获得跨节点和分布的完整数据分布。过滤或加入 table 的任何查询都会快得多。
正如您指出的那样,缺点是您现在正在存储数据的另一个副本......假设您不会在摄取后从数据湖中删除文件。
将 Create External Table 视为简单地提供外部文件到 SQL 数据结构的映射。
我正在尝试构建一个 Azure 数据工厂管道,该管道从 Azure 数据湖中获取数据并进行转换。
我想将转换后的数据存储在 Azure SQL 数据仓库中(作为事实和维度)。
我最终找到了两个解决方案来使数据在仓库中可用:
- 使用 CREATE EXTERNAL TABLE 并引用
.csv
文件中 Lake 中的转换数据; - 使用 CTAS 将
.csv
文件从湖中复制到仓库中;
问题
对我来说,权衡取舍并不明显。一方面,在我看来,第一个选项避免了复制到仓库(是吗?)。但是第二个选项会提供更多选项,例如索引。
与 CTAS 相比,CREATE EXTERNAL TABLE 的优缺点是什么?
将数据登陆 DW(使用 CTAS)的主要好处是后续对该数据的查询会明显更快。您将获得跨节点和分布的完整数据分布。过滤或加入 table 的任何查询都会快得多。
正如您指出的那样,缺点是您现在正在存储数据的另一个副本......假设您不会在摄取后从数据湖中删除文件。
将 Create External Table 视为简单地提供外部文件到 SQL 数据结构的映射。