Hive加入错误

时间:2015-04-10 14:06:15

标签: sql hadoop hive hql

我正在基于hive运行一个简单的查询,并收到错误:

java.io.IOException:无法运行程序“/ home / hadoop / bin / hadoop”(在目录“/ home / ec2-user”中):error = 13,Permission denied

当我做一个简单的选择时,

 select * from million_songs_sample;

它运作得很好。但当我加入连接时,我得到的错误。

以下是导致错误的代码:

 SELECT a.song as driver_song_id, b.song as also_song_id,
 count(a.play_count) as play_count
 from (
 select user, song, play_count
 from million_songs_sample) a 
 join (
 select user, song
 from million_songs_sample) b 
 on a.user = b.user
 where a.song != b.song
 group by a.song, b.song;
 group by a.song, b.user; 

以下是我表格中的数据:

 u1,s10,3
 u1,s11,1
 u1,s15,5
 u1,s17,1
 u1,s19,3
 u2,s10,1
 u2,s12,6
 u2,s19,5
 u3,s11,1
 u3,s12,1
 u3,s13,1
 u3,s14,1
 u3,s17,3
 u4,s10,2
 u4,s12,5
 u4,s19,3

2 个答案:

答案 0 :(得分:0)

这听起来像临时表上的某种权限问题 - 您需要与当地人交谈才能弄明白。

但是,也许在没有子查询的情况下重写查询将解决问题:

SELECT a.song as driver_song_id, b.song as also_song_id,
       count(a.play_count) as play_count
from million_songs_sample a join
     million_songs_sample b 
     on a.user = b.user
where a.song <> b.song
group by a.song, b.song;

答案 1 :(得分:0)

答案是,在从S3存储创建表时,您无法加入表。要解决这个问题,首先要创建一个TEMP表作为第二个连接的副本,它运行良好。