2016-03-17 9 views
0

Я использую RevoR entreprise для обработки импотенции больших файлов данных. Пример, приведенный в документации говорится, что 10 файлов (1000000 строк каждая) будут импортированы в качестве набора данных, используя цикл rxImport так:Как я могу получить все данные из разделенных больших файлов в R Revolution Enterprise?

setwd("C:/Users/Fsociety/Bigdatasamples") 
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples" 
Data.File <- file.path(Data.Directory,"mortDefault") 
mortXdfFileName <- "mortDefault.xdf" 

append <- "none" 
for(i in 2000:2009){ 
importFile <- paste(Data.File,i,".csv",sep="") 
mortxdf <- rxImport(importFile, mortXdfFileName, append = append, overwrite = TRUE, maxRowsByCols = NULL) 
append <- "rows"  
} 
mortxdfData <- RxXdfData(mortXdfFileName) 
knime.out <- rxXdfToDataFrame(mortxdfData) 

Проблема здесь в том, что я только получаю 500000 строк в наборе данных из-за maxRowsByCols аргумент по умолчанию 1e+06 Я изменил его на более высокое значение, а затем на NULL, но он по-прежнему усекает данные из файла.

ответ

1

Fixed, проблема в том, что RxXdfData() имеет ограничение maxrowbycols, изменяя его в NULL будет конвертировать весь rxXdfData в объект data.frame для Knime.

1

Поскольку вы импортируете XDF, то maxRowsByCols не имеет значения. Кроме того, на последней строке, которую вы читали в data.frame, этот вид побеждает цель использования XDF в первую очередь.

Этот код действительно работает для меня по этим данным http://packages.revolutionanalytics.com/datasets/mortDefault.zip, что я и предполагаю, что вы используете.

Строки 500K связаны с аргументом rowsPerRead, но это только определяет размер блока. Все данные считываются с шагом в 500 тыс., Но могут быть изменены в соответствии с вашими потребностями.

setwd("C:/Users/Fsociety/Bigdatasamples") 
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples" 
Data.File <- file.path(Data.Directory, "mortDefault") 
mortXdfFileName <- "mortDefault.xdf" 

append <- "none" 
overwrite <- TRUE 
for(i in 2000:2009){ 
    importFile <- paste(Data.File, i, ".csv", sep="") 
    rxImport(importFile, mortXdfFileName, append=append, overwrite = TRUE) 
    append <- "rows" 
    overwrite <- FALSE 
} 

rxGetInfo(mortxdfData, getBlockSizes = TRUE) 

# File name: C:\Users\dnorton\OneDrive\R\MarchMadness2016\mortDefault.xdf 
# Number of observations: 1e+07 
# Number of variables: 6 
# Number of blocks: 20 
# Rows per block (first 10): 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 
# Compression type: zlib 
+0

Спасибо, я попробую это. Но я использую xdf-файл как сокращение до огромных данных, которые я собираюсь импортировать. и синтаксис data.frame предназначен для узлов Knime (они не могут обрабатывать только класс rxXDFData data.frame) –

 Смежные вопросы

  • Нет связанных вопросов^_^