[HADOOP] Rhadoop - rmr을 사용한 단어 수
HADOOPRhadoop - rmr을 사용한 단어 수
Rhadoop 패키지를 사용하여 간단한 rmr 작업을 실행하려고하는데 작동하지 않습니다. 여기에 내 R 스크립트가 있습니다.
print("Initializing variable.....")
Sys.setenv(HADOOP_HOME="/usr/hdp/2.2.4.2-2/hadoop")
Sys.setenv(HADOOP_CMD="/usr/hdp/2.2.4.2-2/hadoop/bin/hadoop")
print("Invoking functions.......")
#Referece taken from Revolution Analytics
wordcount = function( input, output = NULL, pattern = " ")
{
mapreduce(
input = input ,
output = output,
input.format = "text",
map = wc.map,
reduce = wc.reduce,
combine = T)
}
wc.map =
function(., lines) {
keyval(
unlist(
strsplit(
x = lines,
split = pattern)),
1)}
wc.reduce =
function(word, counts ) {
keyval(word, sum(counts))}
#Function Invoke
wordcount('/user/hduser/rmr/wcinput.txt')
나는 위의 스크립트로 실행 중이다.
Rscript wordcount.r
오류가 발생했습니다.
[1] "Initializing variable....."
[1] "Invoking functions......."
Error in wordcount("/user/hduser/rmr/wcinput.txt") :
could not find function "mapreduce"
Execution halted
친절하게 문제가 무엇인지 알려주세요.
해결법
-
==============================
1.먼저 코드에서 HADOOP_STREAMING 환경 변수를 설정해야합니다.
먼저 코드에서 HADOOP_STREAMING 환경 변수를 설정해야합니다.
아래 코드를 시도해보고 코드에서 hdfs 폴더 examples / wordcount / data에 텍스트 파일을 복사했다고 가정합니다
Sys.setenv("HADOOP_CMD"="/usr/local/hadoop/bin/hadoop") Sys.setenv("HADOOP_STREAMING"="/usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar") # load librarys library(rmr2) library(rhdfs) # initiate rhdfs package hdfs.init() map <- function(k,lines) { words.list <- strsplit(lines, '\\s') words <- unlist(words.list) return( keyval(words, 1) ) } reduce <- function(word, counts) { keyval(word, sum(counts)) } wordcount <- function (input, output=NULL) { mapreduce(input=input, output=output, input.format="text", map=map, reduce=reduce) } ## read text files from folder example/wordcount/data hdfs.root <- 'example/wordcount' hdfs.data <- file.path(hdfs.root, 'data') ## save result in folder example/wordcount/out hdfs.out <- file.path(hdfs.root, 'out') ## Submit job out <- wordcount(hdfs.data, hdfs.out) ## Fetch results from HDFS results <- from.dfs(out) results.df <- as.data.frame(results, stringsAsFactors=F) colnames(results.df) <- c('word', 'count') head(results.df)
word count AS 16 As 5 B. 1 BE 13 BY 23 By 7
참조 용으로 R 워드 카운트 맵 축소 프로그램을 실행하는 또 다른 예제가 있습니다.
희망이 도움이됩니다.
from https://stackoverflow.com/questions/30261383/rhadoop-wordcount-using-rmr by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 내 시퀀스 파일이 내 하프 매퍼 클래스에서 두 번 읽히는 이유는 무엇입니까? (0) | 2019.06.27 |
---|---|
[HADOOP] 오라클에서 BLOB (이미지)를 하이브로 가져 오기 (0) | 2019.06.27 |
[HADOOP] Getting Cascading.tap.hadoop.io.MultiInputSplit 클래스가 계단식 프레임 워크를 사용하여 hadoop 프로그램을 실행하는 동안 예외를 찾을 수 없습니다. (0) | 2019.06.27 |
[HADOOP] 모 놀리 식 항아리 만드는 법. 파일? (0) | 2019.06.27 |
[HADOOP] 하이브를 asp.net 프로젝트에 연결하는 방법 (0) | 2019.06.27 |