Vikas Kumar
Vikas Kumar

Reputation: 1

Apache Drill and Apache Kudu - not able to run "select * from <some table>" using Apache Drill, for the table created in Kudu through Apache Impala

I'm able to connect to Kudu through Apache Drill, and able to list tables fine. But when I have to fetch data from the table "impala::default.customer" below, I tried different options but none is working for me.

The table in Kudu was created through Impala-Shell as external table.

  1. Initial connection to Kudu and listing objects
ubuntu@ubuntu-VirtualBox:~/Downloads/apache-drill-1.19.0/bin$ sudo ./drill-embedded
Apache Drill 1.19.0
"A Drill is a terrible thing to waste."
apache drill> SHOW DATABASES;
+--------------------+
|   SCHEMA_NAME     |
+--------------------+
| cp.default        |
| dfs.default       |
| dfs.root          |
| dfs.tmp           |
| information_schema |
| kudu              |
| sys               |
+--------------------+
7 rows selected (24.818 seconds)
apache drill> use kudu;
+------+----------------------------------+
|  ok  |            summary             |
+------+----------------------------------+
| true | Default schema changed to [kudu] |
+------+----------------------------------+
1 row selected (0.357 seconds)
apache drill (kudu)> SHOW TABLES;
+--------------+--------------------------------+
| TABLE_SCHEMA |        TABLE_NAME          |
+--------------+--------------------------------+
| kudu      | impala::default.customer      |
| kudu      | impala::default.my_first_table |
+--------------+--------------------------------+
2 rows selected (9.045 seconds)



apache drill (kudu)> show tables;
+--------------+--------------------------------+
| TABLE_SCHEMA |        TABLE_NAME          |
+--------------+--------------------------------+
| kudu      | impala::default.customer      |
| kudu      | impala::default.my_first_table |
+--------------+--------------------------------+
  1. Now when trying to run "select * from impala::default.customer ", not able to run it at all.

>>>>>>>>>
apache drill (kudu)> SELECT * FROM `impala::default`.customer;
Error: VALIDATION ERROR: Schema [[impala::default]] is not valid with respect to either root schema or current default schema.


>>>>>>>>>
apache drill (kudu)> SELECT * FROM `default`.customer;
Error: VALIDATION ERROR: Schema [[default]] is not valid with respect to either root schema or current default schema.

Current default schema: kudu

[Error Id: 8a4ca4da-2488-4775-b2f3-443b8b4b17ef ] (state=,code=0)
Current default schema: kudu

[Error Id: ce96ea13-392f-4910-9f6c-789a6052b5c1 ] (state=,code=0)
apache drill (kudu)>

>>>>>>>>>


apache drill (kudu)> SELECT * FROM `impala`::`default`.customer;
Error: PARSE ERROR: Encountered ":" at line 1, column 23.

SQL Query: SELECT * FROM `impala`::`default`.customer
                                ^

[Error Id: 5aacdd98-db6e-4308-9b33-90118efa3625 ] (state=,code=0)


>>>>>>>>>
apache drill (kudu)> SELECT * FROM `impala::`.`default`.customer;
Error: VALIDATION ERROR: Schema [[impala::, default]] is not valid with respect to either root schema or current default schema.

Current default schema: kudu

[Error Id: 5450bd90-dfcd-4efe-a8d3-b517be85b10a ] (state=,code=0)

>>>>>>>>>>>

Upvotes: 0

Views: 636

Answers (1)

cgivre
cgivre

Reputation: 576

In Drill conventions, the first part of the FROM clause is the storage plugin, in this case kudu. When you ran the SHOW TABLES query, you saw that the table name is actually impala::default.my_first_table. If I'm reading that correctly, that whole bit is the table name and the query below is how you should escape it.

Note the back tick before impala and after first_table but nowhere else.

SELECT * 
FROM kudu.`impala::default.my_first_table`

Does that work for you?

Upvotes: 1

Related Questions