You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Stas Sukhanov (JIRA)" <ji...@apache.org> on 2017/11/01 12:13:00 UTC

[jira] [Updated] (PHOENIX-3460) Phoenix Spark plugin cannot find table with a Namespace prefix

     [ https://issues.apache.org/jira/browse/PHOENIX-3460?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stas Sukhanov updated PHOENIX-3460:
-----------------------------------
    Attachment: 0001-Phoenix-fix.patch
                SchemaUtil.java

[~tdsilva] Sure. See attached files. SchemaUtil.java is already patched you can simply add it to your uber jar or repack phoenix. Note that namespace mapping is completely disabled and trigger is hardcoded (line 1017).

Also here is a test to see the problem.

{code:java}
// setup

PhoenixConnection connection = getConnection().unwrap(PhoenixConnection.class);
ConnectionQueryServices services = connection.getQueryServices();
try (HBaseAdmin admin = services.getAdmin()) {
    admin.createNamespace(NamespaceDescriptor.create("test_ns").build());
}
Statement statement = connection.createStatement();
statement.executeUpdate(String.format("create table \"%s\" (\"id\" bigint primary key, \"msg\" varchar)", "test_ns:test_table"));
connection.commit();

((PhoenixDriver) DriverManager.getDriver(connection.getURL())).clearCachedQueryServices();
services.close();

// test

PhoenixConnection newConnection = getConnection().unwrap(PhoenixConnection.class);

PhoenixRuntime.generateColumnInfo(newConnection, "\"test_ns:test_table\"",
        Arrays.asList("id", "msg")); // FAIL
{code}


> Phoenix Spark plugin cannot find table with a Namespace prefix
> --------------------------------------------------------------
>
>                 Key: PHOENIX-3460
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3460
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.8.0
>         Environment: HDP 2.5
>            Reporter: Xindian Long
>            Priority: Major
>              Labels: namespaces, phoenix, spark
>             Fix For: 4.7.0
>
>         Attachments: 0001-Phoenix-fix.patch, SchemaUtil.java
>
>
> I am testing some code using Phoenix Spark plug in to read a Phoenix table with a namespace prefix in the table name (the table is created as a phoenix table not a hbase table), but it returns an TableNotFoundException.
> The table is obviously there because I can query it using plain phoenix sql through Squirrel. In addition, using spark sql to query it has no problem at all.
> I am running on the HDP 2.5 platform, with phoenix 4.7.0.2.5.0.0-1245
> The problem does not exist at all when I was running the same code on HDP 2.4 cluster, with phoenix 4.4.
> Neither does the problem occur when I query a table without a namespace prefix in the DB table name, on HDP 2.5
> The log is in the attached file: tableNoFound.txt
> My testing code is also attached.
> The weird thing is in the attached code, if I run testSpark alone it gives the above exception, but if I run the testJdbc first, and followed by testSpark, both of them work.
>  After changing to create table by using
> create table ACME.ENDPOINT_STATUS
> The phoenix-spark plug in seems working. I also find some weird behavior,
> If I do both the following
> create table ACME.ENDPOINT_STATUS ...
> create table "ACME:ENDPOINT_STATUS" ...
> Both table shows up in phoenix, the first one shows as Schema ACME, and table name ENDPOINT_STATUS, and the later on shows as scheme none, and table name ACME:ENDPOINT_STATUS.
> However, in HBASE, I only see one table ACME:ENDPOINT_STATUS. In addition, upserts in the table ACME.ENDPOINT_STATUS show up in the other table, so is the other way around.
>  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)