Dynamic Schema Discovery 在 Drill-Hive 的情况下没有完成
Dynamic Schema Discovery is not done in case of Drill- Hive
我正在使用 hive 和 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"
}
}
查询和所有工作正常。
然后我想检查它是否自动发现配置单元中新创建的tables。
我开始在嵌入式模式下进行钻取,并在 hive 中使用了一个特定的数据库
use hive.testDB;
这里 testDB
是 Hive 中的一个数据库 tables t1
& t2
。然后我查询:
show tables;
它给了我 table 个名字
t1
t2
我在 hive 中创建了一个 table t3
,然后在 Drill 中再次触发 show tables;
。
它仍然显示 t1 t2
。 5-10 分钟后,我再次发射 show tables;
,它显示 t1 t2 t3
。
我认为在 hive 中添加 t3
后应该立即显示 t3
。
What can be reason for this behavior and how drill is handling it internally?
我在 Drill 的社区上问了同样的问题并找到了解决方案:
Drill 在其 HiveMetaStoreClient 中使用缓存,以减少
访问 HiveMetaStore 的开销。默认情况下,cache TTL 为 60 秒。
此问题已解决。这个问题包含在 Drill 1.5 中。缓存TTL可以通过配置hive存储插件来缩短。
如果你想让缓存的TTL更短,你可以配置hive
存储插件。
示例配置单元插件(缓存 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。
我正在使用 hive 和 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"
}
}
查询和所有工作正常。
然后我想检查它是否自动发现配置单元中新创建的tables。
我开始在嵌入式模式下进行钻取,并在 hive 中使用了一个特定的数据库
use hive.testDB;
这里 testDB
是 Hive 中的一个数据库 tables t1
& t2
。然后我查询:
show tables;
它给了我 table 个名字
t1
t2
我在 hive 中创建了一个 table t3
,然后在 Drill 中再次触发 show tables;
。
它仍然显示 t1 t2
。 5-10 分钟后,我再次发射 show tables;
,它显示 t1 t2 t3
。
我认为在 hive 中添加 t3
后应该立即显示 t3
。
What can be reason for this behavior and how drill is handling it internally?
我在 Drill 的社区上问了同样的问题并找到了解决方案:
Drill 在其 HiveMetaStoreClient 中使用缓存,以减少 访问 HiveMetaStore 的开销。默认情况下,cache TTL 为 60 秒。
此问题已解决。这个问题包含在 Drill 1.5 中。缓存TTL可以通过配置hive存储插件来缩短。
如果你想让缓存的TTL更短,你可以配置hive 存储插件。
示例配置单元插件(缓存 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。