在Drill-Hive的情况下,不会进行动态模式发现

时间:2015-10-22 09:59:19

标签: apache-drill

我正在使用hive with drill。

存储插件信息:

{
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "",
    "javax.jdo.option.ConnectionURL": "jdbc:mysql://localhost:3306/metastore_hive",
    "javax.jdo.option.ConnectionDriverName": "com.mysql.jdbc.Driver",
    "javax.jdo.option.ConnectionUserName": "root",
    "javax.jdo.option.ConnectionPassword": "root",
    "hive.metastore.warehouse.dir": "/user/hive/warehouse",
    "fs.default.name": "file:///",
    "hive.metastore.sasl.enabled": "false"
  }
}

它适用于查询和所有。

然后我想检查它是否会在配置单元中自动发现新创建的表。

我开始在嵌入式模式下钻取并使用

在hive中使用特定数据库
use hive.testDB;

此处testDB是Hive中的数据库,其中包含表t1& t2。然后我问:

show tables;

它给了我表名

t1 
t2

我在hive中创建了一个表t3,然后又在Drill中解雇了show tables;。 它仍然显示t1 t2。 5-10分钟后,我再次解雇show tables;并显示t1 t2 t3

我认为在hive中添加t3后应立即显示t3

  

这种行为可能是什么原因以及钻取内部如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

我在Drill社区&amp;问我同样的问题。发现它的解决方案:

Drill在其HiveMetaStoreClient中使用缓存,以减少 访问HiveMetaStore的开销。默认情况下,cache TTL为60秒。

有一个已解决的问题。此问题已合并到Drill 1.5中。通过配置hive存储插件可以缩短缓存TTL。

如果要缩短缓存TTL,可以配置配置单元 存储插件。

示例配置单元插件缓存ttl 5秒):

"configProps": {
  "hive.metastore.uris": "thrift://hive.ip.address.com:9083",
  ... // other setting, 

  "hive.metastore.cache-ttl-seconds": "5",
  "hive.metastore.cache-expire-after": "access"
}

查看更多详情here