Apache Drill 1.2 和 Oracle JDBC
Apache Drill 1.2 and Oracle JDBC
在嵌入式模式下使用 Apache Drill v1.2 和 Oracle Database 10g 企业版 10.2.0.4.0 - 64 位。
我很好奇是否有人成功地将 Apache Drill 连接到 Oracle 数据库。我已经使用以下配置(根据文档)更新了 drill-override.conf
:
drill.exec: {
cluster-id: "drillbits1",
zk.connect: "localhost:2181",
drill.exec.sys.store.provider.local.path = "/mypath"
}
并将 ojdbc6.jar
放在 \apache-drill-1.2.0\jarsrdparty
中。我可以成功创建存储插件:
{
"type": "jdbc",
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:@<IP>:<PORT>:<SID>",
"username": "USERNAME",
"password": "PASSWORD",
"enabled": true
}
但是当我发出如下查询时:
select * from <storage_name>.<schema_name>.`dual`;
我收到以下错误:
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>].
我尝试查询其他 schema/tables 并得到类似的结果。我也试过连接到 Teradata 并得到同样的错误。有人 suggestions/run 遇到类似问题吗?
它与 Drill 1.3(2015 年 12 月 23 日发布)一起工作
插件:名称 - oracle
{
"type": "jdbc",
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:user/password@192.xxx.xxx.xxx:1521:orcl ",
"enabled": true
}
查询:
select * from <plugin-name>.<user-name>.<table-name>;
示例:
select * from oracle.USER.SAMPLE;
查看 drill's documentation 了解更多详情。
Note: Make sure you added ojdbc7.12.1.0.2.jar
(recommended in docs) in apache-drill-1.3.0/jars/3rdparty
它在 Apache drill 1.3 中有点工作。
奇怪的是,我只能查询创建了同义词的表...
在命令行中尝试:
使用 ;
显示表格;
这将为您提供一个您可以查询的对象列表 - dual 不在该列表中 ;-).
我正在使用 apache-drill-1.9.0,似乎模式名称被解释为区分大小写,因此必须是大写。
对于 table user1.my_tab
(这是在 Oracle 中默认创建的大写字母)
这适用于 Drill(插件名称是 oracle)
SELECT * FROM oracle.USER1.my_tab;
但这会触发错误
SELECT * FROM oracle.user1.my_tab;
SEVERE: org.apache.calcite.sql.validate.SqlValidatorException: Table 'oracle.user1.my_tab' not found
另一种方法是使用 use
设置插件名称和架构名称(所有者也必须大写)
0: jdbc:drill:zk=local> use oracle.USER1;
+-------+-------------------------------------------+
| ok | summary |
+-------+-------------------------------------------+
| true | Default schema changed to [oracle.USER1] |
+-------+-------------------------------------------+
1 row selected (0,169 seconds)
0: jdbc:drill:zk=local> select * from my_tab;
+------+
| X |
+------+
| 1.0 |
| 1.0 |
+------+
2 rows selected (0,151 seconds)
在嵌入式模式下使用 Apache Drill v1.2 和 Oracle Database 10g 企业版 10.2.0.4.0 - 64 位。
我很好奇是否有人成功地将 Apache Drill 连接到 Oracle 数据库。我已经使用以下配置(根据文档)更新了 drill-override.conf
:
drill.exec: {
cluster-id: "drillbits1",
zk.connect: "localhost:2181",
drill.exec.sys.store.provider.local.path = "/mypath"
}
并将 ojdbc6.jar
放在 \apache-drill-1.2.0\jarsrdparty
中。我可以成功创建存储插件:
{
"type": "jdbc",
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:@<IP>:<PORT>:<SID>",
"username": "USERNAME",
"password": "PASSWORD",
"enabled": true
}
但是当我发出如下查询时:
select * from <storage_name>.<schema_name>.`dual`;
我收到以下错误:
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>].
我尝试查询其他 schema/tables 并得到类似的结果。我也试过连接到 Teradata 并得到同样的错误。有人 suggestions/run 遇到类似问题吗?
它与 Drill 1.3(2015 年 12 月 23 日发布)一起工作
插件:名称 - oracle
{
"type": "jdbc",
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:user/password@192.xxx.xxx.xxx:1521:orcl ",
"enabled": true
}
查询:
select * from <plugin-name>.<user-name>.<table-name>;
示例:
select * from oracle.USER.SAMPLE;
查看 drill's documentation 了解更多详情。
Note: Make sure you added
ojdbc7.12.1.0.2.jar
(recommended in docs) inapache-drill-1.3.0/jars/3rdparty
它在 Apache drill 1.3 中有点工作。
奇怪的是,我只能查询创建了同义词的表...
在命令行中尝试:
使用
显示表格;
这将为您提供一个您可以查询的对象列表 - dual 不在该列表中 ;-).
我正在使用 apache-drill-1.9.0,似乎模式名称被解释为区分大小写,因此必须是大写。
对于 table user1.my_tab
(这是在 Oracle 中默认创建的大写字母)
这适用于 Drill(插件名称是 oracle)
SELECT * FROM oracle.USER1.my_tab;
但这会触发错误
SELECT * FROM oracle.user1.my_tab;
SEVERE: org.apache.calcite.sql.validate.SqlValidatorException: Table 'oracle.user1.my_tab' not found
另一种方法是使用 use
设置插件名称和架构名称(所有者也必须大写)
0: jdbc:drill:zk=local> use oracle.USER1;
+-------+-------------------------------------------+
| ok | summary |
+-------+-------------------------------------------+
| true | Default schema changed to [oracle.USER1] |
+-------+-------------------------------------------+
1 row selected (0,169 seconds)
0: jdbc:drill:zk=local> select * from my_tab;
+------+
| X |
+------+
| 1.0 |
| 1.0 |
+------+
2 rows selected (0,151 seconds)