You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Drill连接Neo4j后查询报错,求解决方案

问题

项目中使用Apache Drill连接Neo4j数据库并查询数据,已完成以下操作:

  1. 将neo4j-driver-4.0.10放入第三方jar文件夹
  2. 创建名为collisions的JDBC存储配置:
{
  "type": "jdbc",
  "driver": "org.neo4j.jdbc.bolt.BoltDriver",
  "url": "jdbc:neo4j:bolt://localhost:7687",
  "username": "neo4j",
  "password": "neo4j",
  "authMode": "SHARED_USER",
  "writerBatchSize": 10000,
  "enabled": true
}

执行查询语句select * from collisions.crashes limit 10;时触发错误,核心报错为:

java.lang.UnsupportedOperationException: Method getStatement in class org.neo4j.jdbc.Neo4jResultSet is not yet implemented.

完整错误信息:

Warning   UserRemoteException :     PLUGIN ERROR: Failed to load schema for schema collisions
    
org.apache.drill.common.exceptions.UserRemoteException: PLUGIN ERROR: Failed to load schema for schema collisions

java.lang.UnsupportedOperationException: Method getStatement in class org.neo4j.jdbc.Neo4jResultSet is not yet implemented.


[Error Id: 108138ec-05d7-41af-b7c2-f954798256d8 ]

确认数据已成功加载到Neo4j,且可通过Neo4j Browser正常查询,需解决该报错。

解决方法

1. 更换Neo4j JDBC驱动版本

当前使用的neo4j-driver-4.0.10是纯Bolt驱动,未完整实现Apache Drill依赖的JDBC规范接口。建议替换为Neo4j JDBC Community驱动(包含完整JDBC接口实现),推荐使用neo4j-jdbc-driver-4.0.1或更高兼容版本,避免使用仅支持Bolt协议的轻量驱动包。

2. 调整存储配置参数

  • 若使用完整JDBC驱动,将配置中的driver字段改为:
    "driver": "org.neo4j.jdbc.Neo4jDriver"
    
    同时可将JDBC URL切换为HTTP协议格式:
    "url": "jdbc:neo4j:http://localhost:7474"
    
  • 若坚持使用Bolt协议,需确保驱动包包含org.neo4j.jdbc.bolt.BoltDriver的完整实现,部分旧版本Bolt驱动未实现getStatement方法。

3. 禁用Drill元数据自动加载

Drill在查询前会自动加载数据源的schema,该操作触发了未实现的getStatement方法。可在存储配置中添加参数禁用元数据查询:

{
  // 原有配置内容
  "supportsMetadataQueries": false
}

添加后Drill不会主动加载schema,可直接执行查询语句。

4. 使用Drill自定义查询语法绕过schema加载

直接调用Neo4j的Cypher语句执行查询,避免Drill触发未实现的JDBC方法,示例:

SELECT * FROM TABLE(collisions.query('MATCH (n:crashes) RETURN n LIMIT 10'))

内容的提问来源于stack exchange,提问作者JOSEPH Blessingh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:06:04