快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → Superset sqllab连接hive无法显示表信息的问题

Superset sqllab连接hive无法显示表信息的问题

时间:2022-10-17 18:37:31人气:作者:快盘下载我要评论

一、问题

使用superset,连接hive时(hive的引擎是spark),表名和表信息无法加载,加载出来了一堆表的数据库名

Superset sqllab连接hive无法显示表信息的问题

二、解决问题

1、原因

这个问题的原因是superset里面是使用pyhive去连接,表名加载是通过"show tables in {dbname}"去获取的,而spark sql和hive sql的"show tables"的执行返回结果格式不一样,pyhive最新版本20.0.1并没有支持spark的方言,平时使用没问题,但是放在使用superset去连接的时候,表名显示就混乱。

spark sql

hive sql

Hive

然后我们找到pyhive关于show tables的代码,位置:~/python3.8/site-packages/pyhive/sqlalchemy_hive.py

def get_table_names(self, connection, schema=None, **kw):
        query = 'SHOW TABLES'
        if schema:
            query += ' IN ' + self.identifier_preparer.quote_identifier(schema)

        return [row[0] for row in connection.execute(query)]

这里单纯的时候第一列作为table name返回,这里的话可以给spark添加方言去解决,但是我这里为了偷懒只是改了一下去兼容

def get_table_names(self, connection, schema=None, **kw):
        query = 'SHOW TABLES'
        if schema:
            query += ' IN ' + self.identifier_preparer.quote_identifier(schema)

        # spark sql table name in row[1], hive sql table name in row[0]
        return [row[1] if len(row) > 1 else row[0] for row in connection.execute(query)]
        # return [row[0] for row in connection.execute(query)]

成功

SQL

相关文章

  • 一步步带你设计MySQL索引数据结构

    一步步带你设计MySQL索引数据结构,想想我们生活中的例子,比如新华字典,我们有一个目录,目录根据拼音排序,内容包含了汉字位于字典中具体的的页码。聪明的你肯定也想到了,我们也可以借鉴这种思想,建立一个MySQL的目录,叫做“索引”。...
  • 影刀连接Mysql数据库

    影刀连接Mysql数据库,影刀配置连接mysql数据库基础版...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。