gpt4 book ai didi

azure-data-lake - U-SQL 并行读取 SQL 表

转载 作者:行者123 更新时间:2023-12-01 11:19:21 27 4
gpt4 key购买 nike

在我的场景中,我使用 U-SQL 将数据从 MS SQL DB 提取到 Azure Data Lake。我的表很大,有超过 1600 万条记录(很快就会更多)。我只是执行 SELECT a, b, c FROM dbo.myTable;

然而,我意识到只有一个顶点用于从表中读取数据。

enter image description here

我的问题是,在读取 SQL 表时是否有任何方法可以利用并行性?

最佳答案

我认为 U-SQL 尚不支持外部数据源的并行性(尽管很高兴得到更正)。如果您觉得这是一项重要的缺失功能,您可以在此处创建请求并为其投票:

https://feedback.azure.com/forums/327234-data-lake

作为解决方法,您可以根据数据源中可用的列手动并行化查询。例如按日期

// External query working
USE DATABASE yourADLADB;

// Create the external query for year 2016
@results2016 =
SELECT *
FROM EXTERNAL yourSQLDBDataSource EXECUTE
@"SELECT * FROM dbo.yourBigTable WITH (NOLOCK) WHERE yourDateCol Between '1 Jan 2016 and 31 Dec 2016'";


// Create the external query for year 2017
@results2017 =
SELECT *
FROM EXTERNAL yourSQLDBDataSource EXECUTE
@"SELECT * FROM dbo.yourBigTable WITH (NOLOCK) WHERE yourDateCol Between '1 Jan 2017 and 31 Dec 2017";


// Output 2016 results
OUTPUT @results2016
TO "/output/bigTable/results2016.csv"
USING Outputters.Csv();


// Output 2017 results
OUTPUT @results2017
TO "/output/bigTable/results2017.csv"
USING Outputters.Csv();

现在,我通过将文件分成多个部分创建了一个不同的问题。但是,您可以使用也将并行化的文件集来读取这些内容,例如:

@input =
EXTRACT
... // your column list
FROM "/output/bigTable/results{year}.csv"
USING Extractors.Csv();

鉴于 ADLA 和 U-SQL 为您提供了在数据所在位置查询数据的能力,我想问您为什么选择将如此大的文件移动到您的数据湖中。你能进一步解释一下吗?

关于azure-data-lake - U-SQL 并行读取 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com