配置单元联接错误

ecfsfe2w  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(355)

我正在基于配置单元运行一个简单查询,得到错误:
java.io.ioexception:无法运行程序“/home/hadoop/bin/hadoop”(在目录“/home/ec2 user”中):错误=13,权限被拒绝
当我做一个简单的选择,

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
svgewumm

svgewumm1#

答案是,在从s3存储创建表时,不能将表本身连接起来。为了解决这个问题,首先创建一个临时表作为第二个连接的副本,它工作得很好。

t5fffqht

t5fffqht2#

这听起来像是临时表上的某种权限问题——您需要和本地人谈谈才能解决这个问题。
但是,重写不包含子查询的查询可能会解决问题:

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;

相关问题