R语言读写HDFS文件内容

参考的github的代码rHadoopClient源码

在R语言里面定义一个function函数,函数比较简单,就是利用hdfs的cat命令进行读取临时文件,然后再加载临时文件,最后删除临时文件,启动read.svs()方法根据需求自行修改。

qtread.hdfs <-
function(hdfs.path, hadoop.cmd = "hadoop") {
  tmp.file <- sprintf("tmp_hadoop_%s.csv", as.numeric(Sys.time()))
  cmd <- sprintf("%s fs -cat %s | perl -pe 's/\t/,/g' > %s", hadoop.cmd, hdfs.path, tmp.file)
  cat("执行hadoop命令:",cmd,"\n")
  system(command = cmd)
  df <- read.csv(tmp.file, header = T, stringsAsFactors = F)
  file.remove(tmp.file)
  df
}

然后使用定义好的函数进行读取就行,命令

data = qtread.hdfs("/20180531_H.csv")

R语言写文件方法,调用write.csv

qtwrite.hdfs <-
function(data, hdfs.path, hadoop.cmd = "hadoop") {
  tmp.file <- sprintf("tmp_hadoop_%s.csv", as.numeric(Sys.time()))
  #write.table(data,file=tmp.file,row.names=F,quote=F,col.names=F,sep=sep)
  write.csv(data,file=tmp.file)
  cmd <- sprintf("cat %s | %s fs -put - %s", tmp.file, hadoop.cmd, hdfs.path)
  result <- system(command = cmd)
  file.remove(tmp.file)
  result
}

你可能感兴趣的:(R语言学习)