【问题标题】:Hive Join ErrorHive 加入错误
【发布时间】:2015-04-10 14:06:14
【问题描述】:

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

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

【问题讨论】:

    标签: sql hadoop hive hql


    【解决方案1】:

    这听起来像是临时表的某种权限问题——您需要与当地人交谈才能解决这个问题。

    但是,也许重写不带子查询的查询可以解决问题:

    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;
    

    【讨论】:

      【解决方案2】:

      答案是,在从 S3 存储创建表时,您不能将表连接到自身。为了解决这个问题,首先创建一个 TEMP 表作为第二个连接的副本,它运行良好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多