【问题标题】:Pig - Join doesn't work猪 - 加入不起作用
【发布时间】:2014-03-19 16:49:56
【问题描述】:

我在加入 pig 时遇到问题。我将首先为您提供上下文。这是我的代码:

-- START file loading
start_file = LOAD 'dir/start_file.csv' USING PigStorage(';') as (PARTRANGE:chararray,     COD_IPUSER:chararray);

-- trim
A = FOREACH start_file GENERATE TRIM(PARTRANGE) AS PARTRANGE, TRIM(COD_IPUSER) AS COD_IPUSER;

dump A;

给出输出:

(79.92.147.88,20140310)
(79.92.147.88,20140310)
(109.31.67.3,20140310)
(109.31.67.3,20140310)
(109.7.229.143,20140310)
(109.8.114.133,20140310)
(77.198.79.99,20140310)
(77.200.174.171,20140310)
(77.200.174.171,20140310)
(109.17.117.212,20140310)

加载另一个文件:

-- Chargement du fichier recherche Hadopi
file2 = LOAD 'dir/file2.csv' USING PigStorage(';') as (IP_RECHERCHEE:chararray, DATE_HADO:chararray);

dump file2;

输出是这样的:

(2014/03/10 00:00:00,79.92.147.88)
(2014/03/10 00:00:01,79.92.147.88)
(2014/03/10 00:00:00,192.168.2.67)

现在,我想做一个左外连接。代码如下:

result = JOIN file2 by IP_RECHERCHEE LEFT OUTER, A by COD_IPUSER;
dump result;

输出是这样的:

(2014/03/10 00:00:00,79.92.147.88,,)
(2014/03/10 00:00:00,192.168.2.67,,)
(2014/03/10 00:00:01,79.92.147.88,,)

“file2”的所有记录都在这里,这很好,但任何 start_file 都在这里。就像连接失败一样。

你知道问题出在哪里吗?

谢谢。

【问题讨论】:

    标签: join hadoop bigdata apache-pig


    【解决方案1】:

    您在file2 中错误地标记了您的字段。您将第一个字段称为 IP,将第二个字段称为日期,如您的 dump 所示,情况正好相反。试试FOREACH file2 GENERATE IP_RECHERCHEE,您将看到您尝试加入的字段。

    【讨论】:

      【解决方案2】:

      结果符合预期。您正在调用 Left outer join ,它会查找 file2 中的 IP_RECHERCHEE 字段与 A 的 COD_IPUSER 的匹配。
      由于没有匹配,它会返回 file2 中的所有 IP_RECHERCHEE 字段,并用 null 代替 A 中的字段.
      显然2014/03/10 00:00:00 != 20140310

      【讨论】:

        【解决方案3】:

        您的字段名称错误,您通过错误的字段加入。看来您想通过 IP 地址加入。

        start_file = LOAD 'dir/start_file.csv' USING PigStorage(';') as (IP:chararray, PARTRANGE:chararray);
        
        A = FOREACH start_file GENERATE TRIM(IP) AS IP, TRIM(PARTRANGE) AS PARTRANGE;
        
        file2 = LOAD 'dir/file2.csv' USING PigStorage(';') as (DATE_HADO:chararray, IP:chararray);
        

        我得到的是这个

        (2014/03/10 00:00:00,192.168.2.67,,)
        (2014/03/10 00:00:00,79.92.147.88,79.92.147.88,20140310)
        (2014/03/10 00:00:00,79.92.147.88,79.92.147.88,20140310)
        (2014/03/10 00:00:01,79.92.147.88,79.92.147.88,20140310)
        (2014/03/10 00:00:01,79.92.147.88,79.92.147.88,20140310)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-18
          • 2018-10-21
          • 1970-01-01
          • 1970-01-01
          • 2011-06-10
          相关资源
          最近更新 更多