You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "maghamravikiran (JIRA)" <ji...@apache.org> on 2015/10/06 00:52:26 UTC

[jira] [Commented] (PHOENIX-1999) Phoenix Pig Loader does not return data when selecting from multiple tables in a query with a join

    [ https://issues.apache.org/jira/browse/PHOENIX-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14944189#comment-14944189 ] 

maghamravikiran commented on PHOENIX-1999:
------------------------------------------

[~xakaseanx]  I have a quick test confirming joins work when the table name is escaped correctly.

{code}
 @Test
	 public void testDataFromJoin() throws Exception {
        try {
            //create the table
            String tblA = "CREATE TABLE \"my_table\" (AID INTEGER NOT NULL, ANAME VARCHAR CONSTRAINT pk PRIMARY KEY (AID)) ";
                   
            conn.createStatement().execute(tblA);
            
            String tblB = "CREATE TABLE \"join_table\" (BID INTEGER NOT NULL, BNAME VARCHAR CONSTRAINT pk PRIMARY KEY (BID)) ";
            
            conn.createStatement().execute(tblB);
           
            //upsert the data.
            final String dmlA = "UPSERT INTO \"my_table\"  VALUES(?,?)";
            PreparedStatement stmt = conn.prepareStatement(dmlA);
            int rows = 10;
            for(int i = 0 ; i < rows; i++) {
                stmt.setInt(1, i);
                stmt.setString(2, "a"+i);
                stmt.execute();
            }
            
            final String dmlB = "UPSERT INTO \"join_table\"  VALUES(?,?)";
            stmt = conn.prepareStatement(dmlB);
            for(int i = 0 ; i < rows; i++) {
                stmt.setInt(1, i);
                stmt.setString(2, "b"+i);
                stmt.execute();
            }
            conn.commit();
            pigServer.registerQuery("A = load 'hbase://query/SELECT AID , BID, ANAME FROM \"my_table\" AS t1 JOIN \"join_table\" AS t2 ON t1.AID = t2.BID ' using " + PhoenixHBaseLoader.class.getName() + "('"+zkQuorum + "')  ;");
            Iterator<Tuple> iterator = pigServer.openIterator("A");
            int count = 0;
            while (iterator.hasNext()) {
                Tuple tuple = iterator.next();
                count++;  
            }
            assertEquals(rows,count);
        } finally {
        	
        }
    }
{code}

since it is working, I would like to close this ticket. Please feel free to open it if you are facing any issue.


> Phoenix Pig Loader does not return data when selecting from multiple tables in a query with a join
> --------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-1999
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1999
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.1.0
>         Environment: Pig 0.14.3, Hadoop 2.5.2
>            Reporter: Seth Brogan
>            Assignee: maghamravikiran
>
> The Phoenix Pig Loader does not return data in Pig when selecting specific columns from multiple tables in a join query.
> Example:
> {code}
> DESCRIBE my_table;
> my_table: {a: chararray, my_id: chararray}
> DUMP my_table;
> (abc, 123)
> DESCRIBE join_table;
> join_table: {x: chararray, my_id: chararray}
> DUMP join_table;
> (xyz, 123)
> A = LOAD 'hbase://query/SELECT "t1"."a", "t2"."x" FROM "my_table" AS "t1" JOIN "join_table" AS "t2" ON "t1"."my_id" = "t2"."my_id"' using org.apache.phoenix.pig.PhoenixHBaseLoader('localhost');
> DUMP A;
> (,)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)