【发布时间】:2018-10-18 20:44:15
【问题描述】:
我正在尝试在经过一些转换后将 SQL 查询结果加载到新表中。 但即使是最简单的脚本也会失败。
DECLARE @inquery nvarchar(max) = N'
SELECT TOP 2000000 * from SQL Table'
DECLARE @Rscript nvarchar(max) = N'
sqlConnString = "Driver={SQL Server};SERVER='+@@SERVERNAME+N';DATABASE='+DB_NAME()+N';Trusted_Connection=True;"
outTabName <- "OutputTable"
outTabDS <- RxSqlServerData(table = outTabName, connectionString = sqlConnString)
rxDataStep(inData = InputDataSet, outFile = outTabDS, maxRowsByCols = NULL, rowsPerRead = 500000)
'
EXEC sp_execute_external_script @language = N'R'
, @script = @Rscript
, @input_data_1 = @inquery
WITH result sets none;
当我使用 1M 行运行它时,它运行但无法写入 2M 行。 虽然 RevoScaleR 函数以块的形式处理数据,但为什么有更多的行数是个问题?因为相同的查询 ger 会导致 SQL 服务器。最大内存百分比也分配给 32 GB RAM 中的 50 个。
【问题讨论】:
-
您要加载的数据有多大?检查此链接:support.microsoft.com/en-us/help/3171055/…,为什么不能分配超过 32GB 的空间?可能是您没有分配足够的资源,尝试将分配内存增加到 40Gb 并重新运行 SQL 脚本。
-
问题应该是2M行的问题,即使8GB内存也应该绰绰有余,而且RevoscaleR使用块数据处理。当我检查数据大小时,它是 1.2GB。而且我已经将最大内存百分比分配给 50。
标签: r sql-server machine-learning microsoft-r revoscaler