如何在hadoop中使用union all和使用sql的多个表?

tktrz96b  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(494)

我正在尝试在hadoop中使用sql在sas中“联合所有”多个表。我在union all上找到了线程,并且能够让它在本地sas用户中运行,但是输出太大,sas崩溃了,所以我必须把我想要合并的数据集放到hadoop中,然后合并它们。这就是我在语法上遇到的问题。代码如下。我通常使用代码的开头和结尾部分来连接hadoop。

Proc SQL noerrorstop; 
Connect to HADOOP (server='X' port=X); 
Execute (set X) by HADOOP; 
Execute (drop Table X.CV_All) by HADOOP; 
Execute (create Table X.CV_All as
SELECT cv.* 
INTO: CV_All
FROM (SELECT * FROM X.CV_Dec
UNION ALL
SELECT * FROM X.CV_Jan
UNION ALL
SELECT * FROM X.CV_Feb) cv;
) by HADOOP;
DISCONNECT FROM HADOOP;
quit;

我收到以下错误:错误:执行错误:编译语句时出错:失败:parseexception行1:86在“:”near“into”处缺少eof
先谢谢你。

yptwkmov

yptwkmov1#

我认为hadoop使用 create table as 而不是 select into . 这有用吗?

CREATE TABLE cv_all as
    SELECT cv.* 
    FROM (SELECT * FROM X.CV_Dec
          UNION ALL
          SELECT * FROM X.CV_Jan
          UNION ALL
          SELECT * FROM X.CV_Feb
         ) cv;

一些评论。首先,我不认为子查询对于这个语句是必要的,但是我把它保留了下来。
其次,hadoop缺少了一点,因为它有多个格式相同的表。您应该有一个带有日期列的表。您可以按日期按数据进行分区。

相关问题