强制 CETAS 只写一个文件?
Force CETAS to only write one file?
如果我 运行 创建外部 TABLE AS SELECT * FROM DistributedTable,那么我最终会在 blob 存储中得到 60 个文件。如果我执行 CREATE EXTERNAL TABLE AS SELECT * from sys.objects,我会在 blob 存储中得到一个文件。果然不出所料。
如何从分布式 table 中获取第一个 CETAS 以仅写入一个文件?一旦 Azure SQL DW 支持复制的 table,来自复制的 table 的 CETAS 是否保证只创建一个文件?
场景是希望每天将一个文件导出到 blob 存储。显然,消费应用程序只需要一个文件,并且行数足够小,如果它确实导出到 60 个文件,大多数将是空白的。
sys.objects table 存储在 SQL 数据仓库的控制节点上(而不是分布在计算节点上)。因此,此 table 上的 CETAS 由 1 个编写器线程执行,该线程在 blob 存储中创建 1 个文件。分布式 table 中的数据在 60 个分布中进行分片,因此 SQL DW 中分布式 table 上的 CETAS 将始终创建 60 个文件,每个分布并行写入 1 个文件。
强制为分布式 table 写入单个文件的一种变通方法是在语句的 SELECT 部分使用 TOP 子句。
SELECT count(*) FROM dbo.Finance --N rows
CREATE EXTERNAL TABLE dbo.FinanceExternal
WITH ( LOCATION = '/finance/', DATA_SOURCE = AzureStorage, FILE_FORMAT = TextFile)
AS SELECT TOP N * FROM dbo.FinanceNew;
由于 TOP 表达式是在控制节点上计算的,因此您分发的行 table 将移至控制节点。随后,1 个编写器线程会将结果集写入 blob 存储中的单个文件。
是的,将来 SQL DW 支持复制 table 时,复制 table 的 CETAS 将只创建一个文件。
萨哈吉
了解SQLDW架构和control/compute个节点的作用,参考:https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-overview-what-is/
如果我 运行 创建外部 TABLE AS SELECT * FROM DistributedTable,那么我最终会在 blob 存储中得到 60 个文件。如果我执行 CREATE EXTERNAL TABLE AS SELECT * from sys.objects,我会在 blob 存储中得到一个文件。果然不出所料。
如何从分布式 table 中获取第一个 CETAS 以仅写入一个文件?一旦 Azure SQL DW 支持复制的 table,来自复制的 table 的 CETAS 是否保证只创建一个文件?
场景是希望每天将一个文件导出到 blob 存储。显然,消费应用程序只需要一个文件,并且行数足够小,如果它确实导出到 60 个文件,大多数将是空白的。
sys.objects table 存储在 SQL 数据仓库的控制节点上(而不是分布在计算节点上)。因此,此 table 上的 CETAS 由 1 个编写器线程执行,该线程在 blob 存储中创建 1 个文件。分布式 table 中的数据在 60 个分布中进行分片,因此 SQL DW 中分布式 table 上的 CETAS 将始终创建 60 个文件,每个分布并行写入 1 个文件。
强制为分布式 table 写入单个文件的一种变通方法是在语句的 SELECT 部分使用 TOP 子句。
SELECT count(*) FROM dbo.Finance --N rows
CREATE EXTERNAL TABLE dbo.FinanceExternal
WITH ( LOCATION = '/finance/', DATA_SOURCE = AzureStorage, FILE_FORMAT = TextFile)
AS SELECT TOP N * FROM dbo.FinanceNew;
由于 TOP 表达式是在控制节点上计算的,因此您分发的行 table 将移至控制节点。随后,1 个编写器线程会将结果集写入 blob 存储中的单个文件。
是的,将来 SQL DW 支持复制 table 时,复制 table 的 CETAS 将只创建一个文件。
萨哈吉
了解SQLDW架构和control/compute个节点的作用,参考:https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-overview-what-is/