Ошибка R службы SQL Server ML для большого набора данных: недопустимый поток BXL

Я использую sp_execute_external_script для обработки SQL-запроса с помощью R dplyr. Этот процесс встроен в собственную хранимую процедуру и выводит запрос в формате временного ряда. Скрипт выглядит примерно так:

       USE [Seperate_DB]
GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROC [dbo].[SP_Name]
    AS  
    BEGIN 
    EXEC sp_execute_external_script @language = N'R'
        ,@script = N'
    library(dplyr)
    library(tidyr)
    library(rlang)
    OutputDataSet<-InputDataSet %>% mutate(...R-code)
    '
    ,@input_data_1 = N';WITH CTE AS(
    SELECT Columns
    FROM   table
    WHERE  Constraints=values
    )
    SELECT Columns
    FROM   (
           SELECT Other_Columns
           FROM   CTE
                UNION
           SELECT Other_Columns
           FROM   DB1
                UNION
           SELECT Other_Columns
           FROM   DB2
           WHERE  Constraints=values
                UNION 
           SELECT Other Columns
           FROM   cte
           INNER JOIN DB2.table1
                ON Col1=Col2
    ) AS final
           INNER JOIN DB2.table1 on table1.col = final.col
    GROUP  BY Some_Columns'
    WITH RESULT SETS ((
        [Other_Columns]     INT
        ,[Other_Columns]        FLOAT
        ,[Other_Columns]        Numeric(24,2)
        ,[Other_Columns]        Numeric(24,2)
        ,[Other_Columns]        Numeric(24,2)
        ,[Other_Columns]        Numeric(24,2)
        ,[Other_Columns]        Numeric(24,2)
        ,[Other_Columns]        FLOAT
    ));
    END
    GO

Я знаю, что эта конфигурация работает, когда я ограничиваю данные, проходящие через хранимую процедуру. Однако, когда я обрабатываю весь набор данных, я получаю следующий вывод ошибки через 10 минут обработки;

Я не уверен, что означают эти ошибки, но я прочитал много статей, в которых они рассматриваются. Я думаю, что существует связь с размером набора данных, который создается, когда механизм R создает временной ряд. SQL-запрос загружает набор данных из примерно 350 000 строк, а SQL R-engine (службы ML) должен выводить временной ряд примерно из 24 миллионов строк.

Это версия SQL Server, которую я использую; SELECT @@VERSION

Microsoft SQL Server 2017 (RTM-CU22) (KB4577467) - 14.0.3356.20 (X64) 20 августа 2020 г. 22:33:27 Авторские права (C) 2017 г. Microsoft Corporation Standard Edition (64-разрядная версия) на Windows Server 2016 Standard 10.0 (сборка 14393):) (Гипервизор)

Оперативная память: 32 ГБ

Я был бы признателен за любые советы или соображения о том, как заставить этот процесс работать должным образом. Спасибо.

0 ответов

Другие вопросы по тегам