如何使用Oozie安排Rscripts

时间:2015-10-27 08:34:23

标签: r oozie oozie-coordinator

我在Hortonworks Sandbox上使用Rhadoop将数据从HDFS读取到R,在读取R之后,我正在对该文件执行某些操作。

我想使用Oozie安排(每日,每周,每月)这个R脚本。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

似乎有人为你做了这件事:

以下是来自Oozie R helper on Github的相关bash脚本和使用说明。

#!/bin/bash

die () {
    echo >&2 "$@"
    exit 1
}

[ "$#" -eq 3 ] || die "3 arguments required, $# provided"
hdfs_file=$1
r_file=$2
hdfs_output=$3

if [[  ${hdfs_output} =~ ^\/tmp\/.*$ ]]; then
    echo "I will run the r script $2 on the hdfs $1"
    tmp_filename="/tmp/`date +"%Y%m%d.%H%M%S"`"
    echo "using tmp_dir $tmp_filename"
    tmp_output="/tmp/out`date +"%Y%m%d.%H%M%S"`"


    hadoop fs -getmerge $hdfs_file $tmp_filename
    R -f $r_file --args $tmp_filename $tmp_output
    hadoop fs -rmr $hdfs_output
    hadoop fs -put $tmp_output $hdfs_output 

else 
  die "$hdfs_output must be in /tmp/"
fi
  

Oozie R帮助

     

数据科学团队希望能够使用oozie运行R脚本,

     

他们希望能够使用Hive运行ETL并获得结果   ETL他们想运行r脚本。

     

所以我创建了一个带有3个参数的bash脚本:1。HDFS输入   他们想要运行的文件2.他们想要运行的R脚本3.   在hdfs上输出他们想要结果的地方。 (currentlt   因为用户是mapred我只允许/ tmp /)

     

如何投放

     

你可以像这样使用shell oozie动作:

<shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>run_r_hadoop.sh</exec>
              <argument>/user/hive/warehouse/dual</argument>
              <argument>count.r</argument>
              <argument>/tmp/r_test</argument>
            <file>count.r#count.r</file>
</shell>
     

<强> Prequesite

     

R及其所有库应安装在所有Hadoop软件上,   包括所有使用的库