В следующем примере:R + Hadoop: Как читать файл CSV из HDFS и выполнять mapreduce?
small.ints = to.dfs(1:1000)
mapreduce(
input = small.ints,
map = function(k, v) cbind(v, v^2))
Входные данные для функции MapReduce является объектом, который назван small.ints refered к блокам в HDFS.
Теперь у меня есть файл CSV уже хранится в HDFS, как
"hdfs://172.16.1.58:8020/tmp/test_short.csv"
Как получить объект для него?
И насколько я знаю (что может быть неправильно), если я хочу, чтобы данные из CSV-файла были введены для преобразования mapreduce, я должен сначала создать таблицу в R, которая содержит все значения в файле CSV. У меня есть метод, как:
data=from.dfs("hdfs://172.16.1.58:8020/tmp/test_short.csv",make.input.format(format="csv",sep=","))
mydata=data$val
кажется ОК, чтобы использовать этот метод, чтобы получить MYDATA, а затем сделать объект = to.dfs (MyData), но проблема заключается в файл test_short.csv огромен, что вокруг размера TB, и память не может содержать вывод from.dfs !!
На самом деле, мне интересно, использую ли я «hdfs: //172.16.1.58: 8020/tmp/test_short.csv» как входной файл mapreduce, а внутренняя функция карты выполняет функцию from.dfs(), я в состоянии получить блоки данных?
Пожалуйста, дайте мне совет, что угодно!
О, я не заметил, что я могу поместить формат ввода в MapReduce) аргумент (! Я прочитал вашу вики, в которой сказано, что .dfs и from.dfs используются только для небольших данных и тестирования. Спасибо за помощь! –