W poniższym przykładzie:R + Hadoop: Jak odczytać plik CSV z HDFS i wykonać mapreduce?
small.ints = to.dfs(1:1000)
mapreduce(
input = small.ints,
map = function(k, v) cbind(v, v^2))
dane wejściowe dla funkcji mapreduce jest obiekt nazwany small.ints które skieruję do bloków w HDFS.
Teraz mam już plik CSV zapisany w HDFS jak
"hdfs://172.16.1.58:8020/tmp/test_short.csv"
Jak uzyskać obiekt dla niego?
I o ile wiem (co może być nie tak), jeśli chcę danych z pliku CSV jako dane wejściowe dla mapreduce, muszę najpierw wygenerować tabelę w R, która zawiera wszystkie wartości w pliku CSV. Muszę metody jak:
data=from.dfs("hdfs://172.16.1.58:8020/tmp/test_short.csv",make.input.format(format="csv",sep=","))
mydata=data$val
Wydaje się OK, aby korzystać z tej metody, aby uzyskać mydata, a następnie wykonaj Object = to.dfs (mydata), ale problemem jest to plik test_short.csv jest ogromny, co jest około rozmiaru TB, a pamięć nie może przechowywać danych wyjściowych od.dfs !!
Właściwie, zastanawiam się, czy użyję "hdfs: //172.16.1.58: 8020/tmp/test_short.csv" jako bezpośrednio wejście mapreduce, a funkcja mapy wewnętrznej zrobi coś z ..dfs(), czy ja? w stanie uzyskać bloki danych?
Proszę, daj mi radę, cokolwiek!
Och, ja nie zauważyłem mogę umieścić format wejściowy w MapReduce() Argument! Czytałem twoje wiki, które mówi, że do.dfs i from.dfs są używane tylko dla małych danych i testowania. Dziękuję za pomoc! –