spark sql 查看全部数据库的表

这篇具有很好参考价值的文章主要介绍了spark sql 查看全部数据库的表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 需求背景

大数据环境下,metastore一般都交个hive处理,随着数据库 表 越来越多,进行源数据管理的就会成为痛点,如何能够查询出所有的数据库下的所有表

二 官方文档

Spark 官方文档Tables

-- List all tables from default database matching the pattern `sam*|suj`
SHOW TABLES FROM default LIKE 'sam*|suj';
  +-----------+------------+--------------+--+
  | database  | tableName  | isTemporary  |
  +-----------+------------+--------------+--+
  | default   | sam        | false        |
  | default   | sam1       | false        |
  | default   | suj        | false        |
  +-----------+------------+--------------+--+

官方给的sample中,只能一个库一个库查询,如果有成百上千个库呢?

三 解法1

3.1 DB合集

databases = [
    db.databaseName 
    for db in spark.sql('show databases').collect()
]

3.2 tables合集

tables = [
    for db_rows in [
        spark.sql(f'show tables in {db}').collect() for db in databases
    ] 
    for row in db_rows
]

3.3 result format

targetTables = [
    f"{row['database']}.{row['tableName']}" 
    for db_rows in [
        spark.sql(f'show tables in {db}').collect() for db in targetDBList
    ] 
    for row in db_rows
]

从 Python 3.6 开始,Python f 字符串可用。 该字符串具有f前缀,并使用{}评估变量

python fyingyong

四 解法2

%scala
import org.apache.spark.sql.types._
// Create schema for final result
val schema = List(
    StructField("database", StringType, true),
    StructField("tableName", StringType, true),
    StructField("isTemporary", BooleanType, true)
)
// Create an empty Dataframe in Scala using VAR so its mutable
var resultDF = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], StructType(schema))
// Get list of all Databases and store it in a Data frame
val df = spark.sql("show databases")
// Loop through all the databases and get list of all tables using // show tables from database 
// using unionAll append the dataframe
df.collect.foreach {db =>
   val dbname = db.toString().replaceAll("[\\[\\]]","")
   val tbldf=spark.sql(s"show tables from ${dbname}")
   resultDF = resultDF.unionAll(tbldf)
}
// display is available in databricks. Traditional spark use show
display(resultDF)
// display.show()

解法2出处文章来源地址https://www.toymoban.com/news/detail-623269.html

到了这里,关于spark sql 查看全部数据库的表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【PostgreSql】只删除整个数据库的表(不删除数据库)

    环境: windows 数据库: postgresql 前提: 此方法用来删除数据库所有的表,不包括保存的函数语句、查询语句等(可适用于需要删除整个数据库的数据却又不想删除数据库或者数据库正在连接无法被删除的情况) 查询数据库所有的表(假设表都在public模式下) 这个语句会列出

    2024年04月12日
    浏览(8)
  • 数据库的表和属性

    目录 1.元组 2.码 3.主码-主键 4.外码-外键 5.主键和外键的区别 6.数据库的存储过程 7.SQL的分类 8.数据库设计:ER图 概念:数据库中,每个表的每一行就是一个元组,表的每一列就是一个属性 即表中的列,唯一标识实体的属性 一个表中只能有一个主码 表中的一个属性是另一个

    2024年02月12日
    浏览(9)
  • 【错误记录】SQL Server Management Studio 修改数据库表报错 ( 不允许保存更改。您所做的更改要求删除并重新创建一下表。您对无法重新创建的表进行了更改或者启用了“阻止保存 )

    【错误记录】SQL Server Management Studio 修改数据库表报错 ( 不允许保存更改。您所做的更改要求删除并重新创建一下表。您对无法重新创建的表进行了更改或者启用了“阻止保存 )

    在 SQL Server Management Studio 中 , 修改数据库表报如下错误 : 不允许保存更改。您所做的更改要求删除并重新创建一下表。您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改“选项。 当您在 Microsoft Access 中尝试对表进行某些更改时,可能会收到以下错

    2024年02月16日
    浏览(10)
  • sqlserver数据库创建自定义数据类型的表

    用户定义表数据类型是从SQL Server 2008开始提供的一种新功能。 本文主要向大家介绍了SQLServer数据库之Sqlserver 自定义表类型定义,使用,删除,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。 在sqlserver数据库中 创建自定义数据库类型,并且自定义数据类

    2024年02月06日
    浏览(7)
  • mysql如何查询数据库里的表

    要在MySQL中查询数据库里的所有表,你可以使用 SHOW TABLES 命令。 下面是步骤说明: 登录MySQL : 使用命令行工具登录到MySQL数据库。例如: 选择要查询的数据库 : 使用 USE [数据库名]; 来选择你要查询的数据库。例如,要选择名为 sampledb 的数据库,你可以运行: 查询数据库里的

    2024年02月06日
    浏览(12)
  • 学生信息数据库(stusys)的表结构和样本数据

    学生信息数据库(stusys)的表结构和样本数据

    #(1)创建数据库stuexpm create database stuexpm; #(2)创建studentinfo表,显示studentinfo表的基本结构 #表4.9 use stuexpm; create table StudentInfo ( StudentID varchar(6) not null primary key comment\\\'学号\\\', Name varchar(8) not null comment\\\'姓名\\\', Sex varchar(2) not null default \\\'男\\\' comment\\\'性别\\\', Birthdar date not null comment\\\'出生

    2024年02月05日
    浏览(7)
  • 使用pycharm连接读取orcl数据库的表

    使用pycharm连接读取orcl数据库的表

    背景:工作需要 需求:使用pycharm访问远程oracle类型数据库的表,表中包含lob字段(这也是个坑!) 麻了,搞了一个星期,终于成功了,真可谓是每步都有坑,看的文章也有小一百篇了,我要及时把自己的踩坑路总结出来,希望对你有用哟~ 下载安装免费的Pycharm社区版参见

    2024年01月22日
    浏览(11)
  • django对数据库中的表进行重新生成

    django对数据库中的表进行重新生成

    删除数据库中的表 删除项目中migrations包下的初始化文件 进入到manage.py目录下执行命令 python manage.py makemigrations 执行完上述命令之后,再执行命令 python manage.py migrate 就可以啦 最后执行 python manage.py runserver 运行我们的Django项目 关于详细的数据表生成见博文:https://blog.csdn.n

    2024年02月16日
    浏览(8)
  • 几种常见数据库的表和列信息查询

    几种常见数据库的表和列信息查询

    工作中如果和第三方做接口或者抽取数据,经常会用到不同的数据库的表结构信息以及列信息查询,本篇将简单总结一下 oracle,mysql,sqlsever 的表结构信息查询。 输出信息包括: 列名称,列类型,列长度,精度等信息 2.4.1 schemata 数据库信息 2.4.2 tables表信息 2.4.3 columns列信息 列

    2024年02月08日
    浏览(9)
  • MySQL中的表与视图:解密数据库世界的基石

    MySQL中的表与视图:解密数据库世界的基石

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:MySQL的100个知识点。 🎉欢迎 👍点赞✍评论⭐收

    2024年02月10日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包