代碼執行速度超過2000個小文件(〜10-50 Kb)〜1分鐘。 Parallelizm = 5u-sql作業非常慢,當我添加一個.NET調用時
@arenaData =
EXTRACT col1, col2, col3
FROM @in
USING Extractors.Tsv(quoting : true, skipFirstNRows : 1, nullEscape : "\\N", encoding:Encoding.UTF8);
@res =
SELECT col1, col2, col3
FROM @arenaData;
OUTPUT @res
TO @out
USING Outputters.Csv();
但是,如果我改變這樣的代碼需要約1小時
@arenaData =
EXTRACT col1, col2, col3
FROM @in
USING Extractors.Tsv(quoting : true, skipFirstNRows : 1, nullEscape : "\\N", encoding:Encoding.UTF8);
@res =
SELECT
col1.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture) AS col1_converted,
, col2, col3
FROM @arenaData;
OUTPUT @res
TO @out
USING Outputters.Csv();
爲什麼.NET調用這麼慢?我需要將源CSV文件中的日期格式轉換爲「yyyy-MM-dd HH:mm:ss」?我怎樣纔能有效地做到這一點?
這聽起來不對。不得不加載CLR並從本地代碼調用C#執行,但這不應該是60倍更糟的額外開銷。您能否給我發送工作鏈接(Microsoft dot com上的usql),以便我可以要求我們的工程團隊進行調查? –
在我將問題發佈到stackoverflow之前,我開始爲ADLA支持團隊提供支持服務。 我沒有這些測試的支持團隊(下面JOB的網址): 而不CLR〜2分鐘(MAXDOP = 5): https://arkadium.azuredatalakeanalytics.net/jobs/68d7a42a-4f66-4308-a398- 3775eee74877?api-version = 2015-11-01-preview 與一個CLR調用相同〜38分鐘(MAXDOP = 5): https://arkadium.azuredatalakeanalytics.net/jobs/4291a7e6-ed0f-4516- b677-38a432a9997c?api-version = 2015-11-01-preview 由於參數已更改,所以時間更改,但問題仍然存在。如此大的差異 – churupaha
一些更多的測試: 與CLR +並行性相同的工作從5增加到20.經歷時間〜10分鐘https:// arkadium。azuredatalakeanalytics.net/jobs/c09a8917-3425-48df-97ea-e4a84dad3c15?api-version=2015-11-01-preview 與CLR +並行性相同的作業從5增加到3.經過時間〜59分鐘+取消由我 https://arkadium.azuredatalakeanalytics.net/jobs/9168ea66-e988-4497-b661-417f1128ceac?api-version=2015-11-01-preview – churupaha