2014-02-14 44 views
0

用一個簡單的HiveQL查詢,看起來像這樣的工作:爲什麼hive試圖寫入/用戶在hdfs?

SELECT event_type FROM {{table}} where dt=20140103 limit 10; 

{{table}}部分是由經使用的Jinja2亞軍代碼我只是插。我正在使用來自python,在蜂巢命令行上使用-e標誌運行我的查詢。

出於某種原因,此安裝程序試圖寫入HDFS中的常規/user目錄?發起命令沒有效果。產生的錯誤如下:

Job Submission failed with exception: 
org.apache.hadoop.security.AccessControlException(Permission denied:user=username, access=WRITE, inode="/user":hdfs:hadoop:drwxrwxr-x\n\tat org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:234) 

爲什麼蜂巢試圖寫入/users?另外,爲什麼像這樣的select語句需要輸出位置呢?

回答

2

Hive是MapReduce的SQL前端,因此需要編譯和執行Java代碼。它不是試圖把輸出放在那裏,而是要執行它的程序。根據您的Hadoop版本,這是通過變量控制:

mapreduce.jobtracker.staging.root.dir 

而且紗線/ Hadoop的2:

yarn.app.mapreduce.am.staging-dir 

這些在mapred-site.xml中設置。

您的跑步者需要對集羣進行身份驗證,並擁有可供使用的可寫目錄。

相關問題