코드는 2000 개의 작은 파일 (~ 10-50 Kb) ~ 1 분 동안 매우 빠르게 수행됩니다. 나는 다음과 같은 코드를 변경하는 경우 Parallelizm는하지만 ~ 1시간u-SQL 작업이 .NET 호출을 추가 할 때 매우 느립니다.
@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();
5.
@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();
소요 = 왜 .NET 호출 너무 느려? 원본 CSV 파일의 날짜 형식을 "yyyy-MM-dd HH : mm : ss"로 변환해야합니까? 어떻게 효과적으로 할 수 있습니까?
이것은 올바르게 들리지 않습니다. CLR을로드하고 네이티브 코드에서 C# 실행으로 호출해야하는 추가 오버 헤드가 있지만 그만큼 60 배 이상은 안됩니다. 엔지니어링 팀에 조사를 요청할 수 있도록 작업 링크 (Microsoft.com에서 usql)를 보내 주시겠습니까? –
stackoverflow에 질문을 게시하기 전에 ADLA 지원 팀 지원 티켓을 시작했습니다. 내가했던 지원 팀이 테스트 (아래 JOB의 URL을) : ~ 2 분 CLR없이 (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 매개 변수가 변경 되었기 때문에 타이밍이 변경되었지만 문제가 여전히 존재합니다. sooo 큰 차이 – churupaha
더 많은 테스트 : CLR + 병렬 처리가 동일한 작업이 5에서 20으로 증가했습니다. 경과 시간 ~ 10 분 https : // arkadium.azuredatalakeanalytics.net/jobs/c09a8917-3425-48df-97ea-e4a84dad3c15?api-version=2015-11-01- 미리보기 CLR + 병렬 처리가 동일한 작업이 5에서 3으로 증가했습니다. 경과 시간 ~ 59 분 + 취소됨 나 https://arkadium.azuredatalakeanalytics.net/jobs/9168ea66-e988-4497-b661-417f1128ceac?api-version=2015-11-01-preview – churupaha