【发布时间】:2018-10-24 16:47:49
【问题描述】:
我一直在尝试使用 Hive 存储插件配置将 Apache Drill 与 Hive 集成。我为存储插件配置了所需的所有必要属性。在 Drill Shell 上,我可以使用以下命令查看 Hive 数据库:
Show Databases;
但是当我尝试使用以下方式列出表格时:
Show Tables;
我没有得到任何结果(没有表格列表)。
以下是我从 Apache Drill 文档和其他来源中遵循的步骤:
- 我通过在所有节点上使用相同的集群 id 更新 drill-override.conf 以及带有端口的 ZK IP,然后在每个节点上调用 Drillbit.sh,创建了一个 Drill 分布式集群。
- 使用 drill-conf 启动了 Drill shell,确保 Hive 元存储服务也处于活动状态。
以下是在 Hive Storage Plugin for Drill 中进行的配置(来自其 Web-UI):
{
"type": "hive",
"configProps": {
"hive.metastore.uris": "thrift://node02.cluster.com:9083",
"javax.jdo.option.ConnectionURL": "jdbc:mysql://node02.cluster.com/hive",
"hive.metastore.warehouse.dir": "/apps/hive/warehouse",
"fs.default.name": "hdfs://node01.cluster.com:8020",
"hive.metastore.sasl.enabled": "false"
},
"enabled": true
}
参考hive-site.xml
后设置所有属性所以,这就是所有其他人为将 Drill 与 Hive 集成所做的工作。我在这里错过了什么吗?
关于版本- 钻头:1.14,Hive:1.2(Hive Metastore:MySQL) 我们在同一节点上也有 Hive Server2,这会导致任何问题吗? 我只想将 Drill 与 Hive 1.2 集成,我做得对吗? 任何指针都会有所帮助,已经花了将近 2 天的时间才把它弄好。 感谢您的宝贵时间。
【问题讨论】:
-
旁注:
ConnectionURL无用(甚至有害),因为您指定了适当的 Metastore 服务 URI——无需访问底层 MySQL 数据库 -
"当我尝试列出表时" > 在哪个数据库中?如果您没有使用
use命令设置隐式数据库,那么您可能会默认使用某些特定于钻头的虚拟区域。 -
Drill 文档对
show tables和usedrill.apache.org/docs/show-tables 非常明确 -
@SamsonScharfrichter 如上所述,我可以使用 USE 命令(比如 USE DUMMY_DB)在 Drill 中访问 hive 数据库,该命令也可以通过 Hive Shell 访问。之后,In Drill SHOW TABLES 不再列出表格。
-
@SamsonScharfrichter 好的,我将在没有 ConnectionURL 的情况下配置 Hive Storage Plugin。如果它有效,我会更新你
标签: hive apache-drill