钻头不显示 hive 或 hbase 表

Posted

技术标签:

【中文标题】钻头不显示 hive 或 hbase 表【英文标题】:drill not showing hive or hbase tables 【发布时间】:2014-11-04 17:18:59 【问题描述】:

我已经创建了一个 hbase 和 hive 表来存储一些数据记录信息。我可以从命令行查询 hbase 和 hive 没有问题。

hbase:扫描 MVLogger; // 返回 9k 多条记录 蜂巢:从 MVLogger 中选择 *; // 返回 9k 多条记录

我的 hbase 表定义是

'MVLogger', NAME => 'dbLogData', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',     REPLICATION_SCOPE => '0', VERSIONS true                                                               
  => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65                                                                    
 536', IN_MEMORY => 'false', BLOCKCACHE => 'true'  

我的配置单元(外部)表定义是:

CREATE EXTERNAL TABLE `MVLogger`(
`rowid` int, 
`ID` int, 
`TableName` string, 
`CreatedDate` string,
`RowData` string,
`ClientDB` string)
ROW FORMAT SERDE 
'org.apache.hadoop.hive.hbase.HBaseSerDe' 
STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ( 
 'serialization.format'='1', 
'hbase.columns.mapping'=':key,dbLogData:ID,dbLogData:TableName,dbLogData:CreatedDate,dbLogData:RowData,dbLogData:ClientDB')
TBLPROPERTIES (
'hbase.table.name'='MVLogger')

当我使用 sqlline 并查看钻取模式时,这就是我所看到的

0: jdbc:drill:zk=ip-*.compu> show schemas;

+-------------+
| SCHEMA_NAME |
+-------------+
| hive.default |
| dfs.default |
| dfs.root    |
| dfs.tmp     |
| cp.default  |
| hbase       |
| sys         |
| INFORMATION_SCHEMA |
+-------------+

当我使用 [schema](除了 sys 之外的任何一个)然后执行显示表时,我什么也得不到...例如

0: jdbc:drill:zk=ip-*.compu> use hbase;
+------------+------------+
|     ok     |  summary   |
+------------+------------+
| true       | Default schema changed to 'hbase' |
+------------+------------+
1 row selected (0.071 seconds)
0: jdbc:drill:zk=ip-*.compu> show tables;
+--------------+------------+
| TABLE_SCHEMA | TABLE_NAME |
+--------------+------------+
+--------------+------------+
No rows selected (0.37 seconds)

在 Drill Web UI (ambari) 的存储选项下,我看到了一个启用的 hbase 和 hive。 hive存储的配置如下。


  "type": "hive",
  "enabled": true,
  "configProps": 
    "hive.metastore.uris": "thrift://ip-*.compute.internal:9083",
    "hive.metastore.warehouse.dir": "/apps/hive/warehouse/",
    "fs.default.name": "hdfs://ip-*.compute.internal:8020/",
    "hive.metastore.sasl.enabled": "false"
  

关于为什么我无法查询 hive/hbase 的任何想法?

更新:该表现在显示在配置单元模式中,但是当我尝试使用简单的 select * from ... 查询它时,它只是挂起,我在任何日志文件中都找不到任何内容。 Hive 表的实际数据存储是 hbase BTW。

发现 Hbase .98 还不兼容 Drill/hbase 插件...http://mail-archives.apache.org/mod_mbox/incubator-drill-user/201410.mbox/%3CCAKa9qDmN_fZ8V8W1JKW8HVX%3DNJNae7gR-UMcZC9QwKVNynQJkA%40mail.gmail.com%3E

【问题讨论】:

另外,我无法通过钻取显示 hbase 表。这是我的钻取数据源配置文件。 "type": "hbase", "config": "hbase.zookeeper.quorum": "ip-,ip-,ip-*", "hbase.zookeeper.property.clientPort" : "2181" , "启用": true 【参考方案1】:

这可能为时已晚,但对于可能看到该帖子并遇到此问题的其他人来说。

0: jdbc:drill:zk=ip-*.compu> use hbase;
+------------+------------+
|     ok     |  summary   |
+------------+------------+
| true       | Default schema changed to 'hbase' |
+------------+------------+
1 row selected (0.071 seconds)
0: jdbc:drill:zk=ip-*.compu> show tables;
+--------------+------------+
| TABLE_SCHEMA | TABLE_NAME |
+--------------+------------+
+--------------+------------+
No rows selected (0.37 seconds)

运行 Drill 的用户对 hbase 没有访问权限。在 hbase 上授予钻取用户访问权限,您将看到这些表。

尝试使用 Drill 用户进入 hbase shell 并运行“list”,在您授予权限之前它也是空的,然后您将看到表格。

【讨论】:

以上是关于钻头不显示 hive 或 hbase 表的主要内容,如果未能解决你的问题,请参考以下文章

用于报告的 Hive 或 HBase?

Spark访问与HBase关联的Hive表

Hive INSERT OVERWRITE 显示错误

Hive 加载数据后,出现字段显示为 NULL的问题

mysql导入到hive hdfs上显示又数据了 hive表里面啥都没有

HBase 或 Hive - Web 请求