有人可以详细说明一下何时在 azure datafactory 中使用 Polybase 与批量插入,这两种复制方法有什么区别?
标有“Polybase”和“COPY 命令”的两个选项仅适用于 Azure Synapse Analytics(以前称为 Azure SQL 数据仓库)。它们都是快速加载方法,涉及将数据暂存在 Azure 存储中(如果尚未在 Azure 存储中),并使用快速、高度并行的方法从存储加载到每个计算节点。特别是在大型表上,这些选项由于其可扩展性而成为首选,但它们确实存在一些限制,如上面的链接所述。
相比之下,在 Azure Synapse Analytics 上,批量插入是一种较慢的加载方法,它通过控制节点加载数据,并且并行度或性能不高。对于大文件来说,速度要慢一个数量级。但它在数据类型和文件格式方面可以更加宽容。
在其他 Azure SQL 数据库上,批量插入是首选且快速的方法。
SQL Server PolyBase 及其从存储在 Azure 数据存储中的文本文件中获取数据的方法。 PolyBase 充当 Azure 数据存储和 SQL Server 之间通信的中间体。
复制命令:-
创建表 [dbo].[行程] (
[DateID] int NOT NULL,
[MedallionID] int NOT NULL,
[HackneyLicenseID] int NOT NULL,
[PickupTimeID] int NOT NULL,
[DropoffTimeID] int NOT NULL,
[PickupGeographyID] int NULL,
[DropoffGeographyID] int NULL,
[PickupLatitude] float NULL,
[PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DropoffLatitude] float NULL,
[DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PassengerCount] int NULL,
[TripDurationSeconds] int NULL,
[TripDistanceMiles] float NULL,
[PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FareAmount] money NULL,
[SurchargeAmount] money NULL,
[TaxAmount] money NULL,
[TipAmount] money NULL,
[TollsAmount] money NULL,
[TotalAmount] money NULL
) 和 ( 分配 = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
);
复制到行程中 从 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/QID6392_20171107_05910_0.txt.gz' 和 ( 文件类型='CSV',
FIELDTERMINATOR = '|',
FIELDQUOTE = '',
ROWTERMINATOR='0X0A',
COMPRESSION = 'GZIP'
) 选项(标签='复制:加载');