首页 > 其他分享 >Pyspark中catalog的作用与常用方法

Pyspark中catalog的作用与常用方法

时间:2024-09-03 16:54:09浏览次数:11  
标签:常用 ldsx Pyspark catalog test table spark data

文章目录

Pyspark catalog用法

catalog 介绍

Catalog是Spark中用于管理元数据信息的接口,这些元数据可能包括库、内部或外部表、函数、表列及临时视图等。

总的来说,PySpark Catalogs是PySpark框架中用于管理和查询元数据的重要组件,它使得Python用户能够更有效地利用PySpark进行大数据处理和分析。

spark = SparkSession.builder.appName('LDSX_TEST') \
            .config('hive.metastore.uris', 'thrift://hadoop01:9083') \
            .config('spark.master',"local[2]" ) \
            .enableHiveSupport().getOrCreate()

cache 缓存表

可以设置缓存等级,默认缓存等级为MEMORY_AND_DISK,是数据表级别的缓存,跟缓存dataframe存在区别,

设置不存在的表报错

# 缓存数据表
spark.catalog.cacheTable('ldsx_test.ldsx_table_one')
#检查是否缓存成功
ldsx = spark.catalog.isCached('ldsx_test.ldsx_table_one')
>True

uncache 清除缓存表

当表不存在数据库会报错

spark.catalog.uncacheTable("ldsx_test.ldsx_table_one")

cleanCache 清理所有缓存表

spark.catalog.clearCache()

createExternalTable 创建外部表

# spark.catalog.createExternalTable(
    #     tableName='ldsx_test_table',
    #     path = './ldsx_one.csv',
    #     database='ldsx_test',
    #
    # )

currentDatabase 返回当前默认库

返回当前默认所在数据库spark.catalog.setCurrentDatabase 设置所在数据库

data = spark.catalog.currentDatabase()

tableExists 检查数据表是否存在,包含临时视图

data = spark.catalog.tableExists('ldsx_test.ldsx_table_one')
>True

databaseExists 检查数据库是否存在

data = spark.catalog.databaseExists('ldsx_test')

dropGlobalTempView 删除全局临时视图

全局临时表查找时候需要指向global_temp

要删除的表不存在报错

#创建全局临时表
spark.createDataFrame([(1, 1)]).createGlobalTempView("my_table")
#注意查询时候需要指向 global_temp
spark.sql('select * from global_temp.my_table').show()
#删除全局临时
ldsx= spark.catalog.dropGlobalTempView("my_table")

dropTempView 删除临时视图

要删除的表不存在报错

#创建临时表
spark.createDataFrame([(1, 1)]).createTempView("my_table")
spark.sql('select * from my_table').show()
#删除临时表
ldsx = spark.catalog.dropTempView("my_table")

functionExists 检查函数是否存在

spark.catalog.functionExists("count")
>True

getDatabase 获取具有指定名称的数据库

data = spark.catalog.getDatabase("ldsx_test")
print(data)
>>Database(name='ldsx_test', catalog='spark_catalog', description='', locationUri='hdfs://master:7171/home/ldsx/opt/hadoopData/hive_data/ldsx_test.db')

getFunction 获取方法

获取不到方法报错

spark.sql("CREATE FUNCTION my_func1 AS 'test.org.apache.spark.sql.MyDoubleAvg'")
data = spark.catalog.getFunction("my_func1")
print(data)
>>Function(name='my_func1', catalog='spark_catalog', namespace=['default'], description='N/A.', className='test.org.apache.spark.sql.MyDoubleAvg', isTemporary=False)

getTable 获取数据表

获取不到表报错

data = spark.catalog.getTable("ldsx_table_one")
print(data)
>>Table(name='ldsx_table_one', catalog='spark_catalog', namespace=['ldsx_test'], description=None, tableType='MANAGED', isTemporary=False)

isCached 检查是否缓存成功

# 缓存数据表
spark.catalog.cacheTable('ldsx_test.ldsx_table_one')
data = spark.catalog.isCached('ldsx_test.ldsx_table_one')
>True

listCatalogs 列出可用的catalogs

catalogs =  spark.catalog.listCatalogs()
print(catalogs)

listColumns 返回数据表的列信息

# 参数:数据表,数据库
catalogs =  spark.catalog.listColumns('ldsx_table_one','ldsx_test')
print(catalogs)
>>    [Column(name='age', description='??', dataType='string', nullable=True, isPartition=False, isBucket=False),
     Column(name='name', description='??', dataType='string', nullable=True, isPartition=False, isBucket=False),
     Column(name='fraction', description='??', dataType='string', nullable=True, isPartition=False, isBucket=False),
     Column(name='class', description='??', dataType='string', nullable=True, isPartition=False, isBucket=False),
     Column(name='gender', description='??', dataType='string', nullable=True, isPartition=False, isBucket=False)]

listDatabases 获取数据库列表

data1 = spark.catalog.listDatabases()
print(data1)
>>[Database(name='default', catalog='spark_catalog', description='Default Hive database',
          locationUri='hdfs://master:7171/home/ldsx/opt/hadoopData/hive_data'),
Database(name='ldsx_test', catalog='spark_catalog', description='',
          locationUri='hdfs://master:7171/home/ldsx/opt/hadoopData/hive_data/ldsx_test.db')]

listTables 获取数据表,包含临时视图

# 展示数据库中数据表以及临时视图
spark.catalog.setCurrentDatabase('ldsx_test')
spark.createDataFrame([(1,1)]).createTempView('TEST')
data = spark.catalog.listTables()
print(data)
>>[Table(name='ldsx_table_one', catalog='spark_catalog', namespace=['ldsx_test'], description=None,
           tableType='MANAGED', isTemporary=False),
     Table(name='TEST', catalog=None, namespace=[], description=None, tableType='TEMPORARY', isTemporary=True)]

setCurrentDatabase 设置当前数据库

spark.catalog.setCurrentDatabase('ldsx_test')
data = spark.catalog.currentDatabase()
print(data)
>> ldsx_test

refreshTable 刷新缓存

看官网案例是,刷新已经缓存的表
当一个表执行了cacheTable后,元数据有变动使用refreshTable进行元数据刷新

refreshByPath 刷新路径

# 假设有一个 Hive 表,其数据存储在 HDFS 上的某个路径
path = "/user/hive/warehouse/mydb.db/mytable"
# 刷新该路径下的表或分区信息
spark.catalog.refreshByPath(path)
df = spark.sql("SELECT * FROM mydb.mytable")
df.show()

recoverPartitions 恢复分区

recoverPartitions尝试恢复 Hive 表中丢失的分区信息,实际使用后更新

标签:常用,ldsx,Pyspark,catalog,test,table,spark,data
From: https://blog.csdn.net/weixin_43322583/article/details/141866244

相关文章

  • SpringBoot项目常用配置文件MybatisPlusConfig、RedisConfig、RedissonConfig、Swagge
    MybatisPlusConfig:@Configuration@MapperScan("com.yupi.usercenter.mapper")publicclassMybatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterc......
  • 安全:nftables常用命令之二
    一,nftables的动作list查看create创建add添加insert插入replace替换delete删除flush清空说明:create和add的区别:如果指定的内容已经存在,add不会返回错误,而create会返回错误add和insert的区别:add是在后面添加,insert是在前面插入。二,nftables的动......
  • docker常用命令
    1、命令汇总官方命令说明:https://docs.docker.com/engine/reference/commandline/docker/dockerversion#显示docker的版本信息dockerinfo#显示docker的系统信息,包括镜像和容器的数量docker--help#帮助命令docker子命令--h......
  • 32.全网最详细trap讲解,trap语法格式,信号和用途,最常用的信号,trap常用的命令,ctrl +
    文章目录语法详解trap格式信号和用途最常用的信号trap常用的命令示例ctrl+c示例信号屏蔽和恢复trap-示例debug示例exit示例return示例综合案例案例1案例2案例3总结友情链接信号捕捉trap,它用于捕获指定的信号并执行预定义的命令。比如,按Ctrl+C会使脚本终止执行,实际上系统发......
  • DzzOffice 系统中常用语法
    可以通过print_r($GLOBALS)或var_dump($GLOBALS),打印全部变量。变量输出输出一个变量的值模板中调用方式:{$my_var}、$my_var在模板中花括号可以省略但不建议去掉。php文件调用方式:$my_var条件判断通过if判断流程分支模板中调用方式:<!--{if$my_var}-->任......
  • 继电器测试中常用的测试仪器和设备有哪些推荐?
    继电器是电气控制系统中常用的一种元件,用于实现电路的开关控制、信号传递等功能。为了保证继电器的正常工作和性能,需要进行严格的测试和检验。以下是一些常用的继电器测试仪器和设备的推荐:继电器测试仪:继电器测试仪是一种专门用于测试继电器性能和参数的仪器。它可以对继电器的......
  • 前后端分离项目的创建方法(注:前端使用了vue技术,后端使用了Spring常用框架)
    下面我将创建一个实现系统登录的前后端分离项目:第一步:使用idea新建一个空项目,命名为Login,然后点击Create。第二步:找到setting选项,点击Build,Exception,Deployment,找到BuildTools,然后选择Maven,重写里面的settings.xml和repository,然后点击OK。(注:setting.xml一般在conf目录......
  • Oracel:常用函数:单行函数、多行函数(组函数)
    一、单行函数单行函数是指每一行数据执行操作后都会返回一行数据单行函数可以进行嵌套,嵌套函数的顺序是由内到外单行函数分为5类:字符、数值、日期、转换、通用函数1)大小写控制函数lower('str'):大写转小写selectlower('ORACLE')fromdual;--oracleupper('str'):小写转......
  • 安全:nftables的常用命令(查看规则)
    一,nftables的地址簇和相应的iptables命令行工具nftables的地址簇iptables命令行工具ip  仅匹配IPv4数据包。如果没有指定地址系列,这是默认设置iptablesip6   ip6tablesinet   iptables和ip6tablesarp   arptablesbridge   ebtable......
  • 使用numpy快速实现统计分析的常用代码实现
    文末赠免费精品编程资料~~NumPy是Python编程语言中用于数值计算的核心库之一,在统计分析方面,它也提供了各种各样的函数来实现统计分析。NumPy统计分析功能概览基本统计量:计算平均值、中位数、众数、标准差、方差等。 排序和搜索:排序数组、查找最大值、最小值、百分位......