2013-06-01 31 views
13

Tôi đang cố gắng chạy rhadoop trên bản phân phối của Cloudera (Tôi không thể nhớ nếu CDH3 hoặc 4) của nó, và đang chạy vào một vấn đề: Rstudio server dường như không nhận ra các biến toàn cầu của tôi.Biến môi trường máy chủ Rstudio không tải?

Trong file /etc/profile.d/r.sh tôi, tôi có:

export HADOOP_HOME=/usr/lib/hadoop 
export HADOOP_CONF=/usr/hadoop/conf 
export HADOOP_CMD=/usr/bin/hadoop 
export HADOOP_STREAMING=/usr/lib/hadoop-mapreduce/ 

Khi tôi chạy R từ nhà ga, tôi nhận được:

> Sys.getenv("HADOOP_CMD") 
[1] "usr/bin/hadoop" 

Nhưng khi tôi chạy máy chủ Rstudio:

> Sys.getenv("HADOOP_CMD") 
[1] "" 

Và kết quả là, khi tôi cố gắng chạy rhdfs:

> library("rJava", lib.loc="/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15") 
> library("rhdfs", lib.loc="/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15") 
Error : .onLoad failed in loadNamespace() for 'rhdfs', details: 
    call: fun(libname, pkgname) 
    error: Environment variable HADOOP_CMD must be set before loading package rhdfs 
Error: package/namespace load failed for 'rhdfs' 

Có ai biết nơi tôi nên đặt các biến môi trường của mình nếu không có trong tệp r.sh cụ thể đó không?

Cảm ơn!

Trả lời

11

Bạn nên đặt biến môi trường ở .Renviron hoặc Renviron.site. Tôi nghĩ rằng các tệp này được xác định theo R_HOME/etc/Renviron.site. Bạn có thể tìm thêm thông tin bằng cách gõ:

> ?Startup 

Có người đã có một vấn đề tương tự here và đây là những gì ông đã làm để giải quyết nó.

+0

Hmm ... Tôi thêm HADOOP_CMD = "/ usr/bin/hadoop" để tôi ~/.Rprofile, nhưng điều đó dường như không làm các trick. Máy chủ Rstudio vẫn cung cấp kết quả "" cho Sys.getenv ("HADOOP_CMD"). – AI52487963

+1

Làm việc cho tôi tôi đã thêm 'SOMEVAR =/somepath' vào'/usr/lib/R/etc/Renviron'. 'R.home() ="/usr/lib/R "'. Tôi khởi động lại RStudio và 'Sys.getenv ('SOMEVAR')' tìm thấy biến một cách chính xác. – user1609452

+0

Xin lỗi, tôi mới dùng rstudio-server và dường như không thể tìm ra vị trí của hồ sơ Renviron. Trong '/ usr/lib /' tôi chỉ có 'rstudio-server' và các thư mục con' bin', 'extras',' R', 'resources', và' www'. Có một điểm được đề nghị để bắt đầu một tệp Renviron trong không? – AI52487963

0

Bạn nên thiết lập các biến môi trường của bạn trong Rstudio như

Sys.setenv ("/ đường dẫn đến Hadoop")

và sau đó bạn cố gắng này

+0

Đây là một cách hiệu quả để giải quyết các vấn đề đường dẫn, nhưng xin lưu ý rằng cú pháp chính xác sẽ là 'Sys.setenv (HADOOP_CMD ="/path/to/hadoop ")'. – FvD

2

Lưu ý rằng trên Windows, R trông cho Tệp .Renviron trong /Users/<name>/Documents, trong khi RStudio dường như mong đợi tệp .Renviron nằm trong /Users/<name>/.

Các vấn đề liên quan