Drill Hive MetaStore筛选器挂钩结果不一致

时间:2019-05-09 14:12:52

标签: apache-drill

我已经创建了自定义的Hive Metastore过滤器挂钩,并已在hive-site.xml中配置了Hive Metastore,Hiveserver2和Drill Hive存储插件。

钻探Hive存储插件

{
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "thrift://x.x.x.x:9083",
    "hive.metastore.warehouse.dir": "/user/hive/warehouse",
    "hive.metastore.filter.hook": "com.hive.MyHiveMetaStoreFilterHook",
    "hive.security.authorization.enabled": "true",
    "datanucleus.schema.autoCreateAll": "true"
  }
}

当从show databasesshow schemasDrill Web UIhive执行beelineSQLLine时,挂钩确实起作用。它根据我们的逻辑进行过滤。无法正常执行的唯一执行是通过JDBC/ODBC客户端,例如Drill Explorer,SQuirrel或DBeaver

问题是当我们尝试通过JDBC/ODBC Client进行连接时,似乎未触发该挂钩并且它显示了所有数据库。仅当我们从JDBC/ODBC ClientDrill Web UIhivebeeline运行命令后,SQLLine才起作用。我想这取决于哪个执行在第一次运行时就填满了缓存。如果我运行了Drill WebUISQLLine,则Drill Metastore缓存将填充正确的结果,因此,来自JDBC/ODBC Client的后续请求将返回预期的结果。但是,如果我们首先运行JDBC/ODBC Client,它将在缓存中填充错误的结果,因此,无论我们在何处执行,它将始终返回错误的结果。

这是Drill或JDBC / ODBC Client中的错误还是预期的行为?
是否有一种简单的方法可以重新实现DrillHiveMetaStoreClient代码,而无需重新编译整个Drill源代码? Hive中的hive.metastore.client.impl之类的东西?

与Drill Web UI / CLI(例如蜂巢,beeline或sqlline)相比,通过JDBC / ODBC Client执行时,行为或结果不一致是很奇怪的

0 个答案:

没有答案