Search code examples
jdbcoracle10grdbmsapache-drill

Apache Drill 1.2 and Oracle JDBC


Using Apache Drill v1.2 and Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit in embedded mode.

I'm curious if anyone has had any success connecting Apache Drill to an Oracle DB. I've updated the drill-override.conf with the following configurations (per documents):

drill.exec: {
  cluster-id: "drillbits1",
  zk.connect: "localhost:2181",
  drill.exec.sys.store.provider.local.path = "/mypath"
}

and placed the ojdbc6.jar in \apache-drill-1.2.0\jars\3rdparty. I can successfully create the storage plug-in:

{
  "type": "jdbc",
  "driver": "oracle.jdbc.driver.OracleDriver",
  "url": "jdbc:oracle:thin:@<IP>:<PORT>:<SID>",
  "username": "USERNAME",
  "password": "PASSWORD",
  "enabled": true
}

but when I issue a query such as:

    select * from <storage_name>.<schema_name>.`dual`; 

I get the following error:

Query Failed: An Error Occurred
org.apache.drill.common.exceptions.UserRemoteException: VALIDATION ERROR: From line 1, column 15 to line 1, column 20: Table '<storage_name>.<schema_name>.dual' not found [Error Id: 57a4153c-6378-4026-b90c-9bb727e131ae on <computer_name>:<PORT>].

I've tried to query other schema/tables and get a similar result. I've also tried connecting to Teradata and get the same error. Does any one have suggestions/run into similar issues?


Solution

  • It's working with Drill 1.3 (released on 23-Dec-2015)

    Plugin: name - oracle

    {
      "type": "jdbc",
      "driver": "oracle.jdbc.driver.OracleDriver",
      "url": "jdbc:oracle:thin:user/password@192.xxx.xxx.xxx:1521:orcl ",
      "enabled": true
    }
    

    Query:

    select * from <plugin-name>.<user-name>.<table-name>;
    

    Example:

    select * from oracle.USER.SAMPLE;
    

    Check drill's documentation for more details.

    Note: Make sure you added ojdbc7.12.1.0.2.jar(recommended in docs) in apache-drill-1.3.0/jars/3rdparty