2015-06-15 3 views
1

Я хочу прочитать файл HDFS в Rstudio, это не файл CSV, который легко сделать, но они являются блоками. Я загрузил данные из базы данных с помощью sqoop, и поэтому у меня есть данные, разделенные на блоки. У меня есть файлы, как это:читать HDFS-блоки в Rstudio

/data/_SUCCESS 
/data/part-m-00000 
/data/part-m-00001 
/data/part-m-00002 
/data/part-m-00003 
/data/part-m-00004 
/data/part-m-00005 

, но я не могу прочитать все файлы, с помощью этой команды можно прочитать только один, в то время: hdfs.data <- file.path(hdfs.root,"part-m-00001" // изменить часть-M-0000 * каждый раз , * не работает, чтобы прочитать все файлы ...

ответ

1

Являются ли они текстовыми файлами? Вы должны иметь возможность загружать файлы так же, как и файлы csv.

list_tables <- lapply(list.files(hdfs.root,full.names = TRUE), read.table) 
library(data.table) 
table_composite <- rbindlist(list_tables) 

Вы должны включить опции read.table в качестве аргументов lapply

В качестве альтернативы, вы можете прочитать полную папку в виде составного файла CSV.

Другой вариант - использование формата open-source rhdfs.

+0

не TXT файл, так как я уже, я вижу, часть-м-00001 ... что вы имеете в виду ull.name? мне нужно записать part-m-0001 part-m-0002. и т.д ? –

+0

Каков формат файла? Можете ли вы открыть его с помощью текстового редактора, такого как vim? Если это так, вы можете прочитать его, используя read.table. –

+0

Нет, это не формат txt, я попытался открыть его с помощью nano, пустым файлом, но для визуализации данных: i введите: hadoop fs -ls/data , и я могу видеть все данные на терминале. –

0

Попробуйте это:

Он загружает данные HDFS в местных, где R установить. И вы можете делать остальную часть данных!

library(data.table) 
sdf_local <- fread(paste("hadoop", "fs -text <HDFS file path>")) 
head(sdf_local) 


Note :<HDFS file path> should be complete path to the file 
Смежные вопросы