当前位置: 首页 > news >正文

【Pyspark-驯化】一文搞懂Pyspark修改hive表描述以及增加列使用技巧

【Pyspark-驯化】一文搞懂Pyspark修改hive表描述以及增加列使用技巧
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

    • 🎯 1.基本介绍
    • 💡 2. 代码用法
      • 2.1 初始化spark环境
      • 2.2 创建或使用现有Hive表
      • 2.3 使用PySpark为列添加注释
    • 💡 3. 高级用法
      • 3.1 批量增加多个列
      • 3.2 在增加列时直接添加注释
    • 💡 4. 注意事项
    • 💡 5. 总结

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1.基本介绍

  在Hive中管理表结构是一项常见任务,尤其是在数据仓库环境中。使用PySpark,我们可以方便地对Hive表进行操作,包括增加新列和为列添加注释。这些操作有助于优化数据模型和提高数据的可读性。

💡 2. 代码用法

2.1 初始化spark环境

  对于pyspark来讲,常用的就是sparkcontext类,一般都是先启动一个这样的程序才可以进行相应的操作,而SparkSession可以在不创建SparkConf,SparkContext或SQLContext的情况下创建SparkSession(它们封装在SparkSession中), 这个sparksession就是用来调取dataframe相关操作的类,具体的操作如下:

    # 一般在进行spark-submit的.py文件在初始化的时候,需要创建spark对象,具体如下from pyspark import SparkConffrom pyspark import SparkContextfrom pyspark.sql import SparkSessionfrom pyspark.sql import SQLContextfrom pyspark.sql import Rowfrom pyspark.sql.types import StructTypefrom pyspark.sql.types import StructFieldfrom pyspark.sql.types import StringTypefrom pyspark.sql import functions as fnfrom pyspark.sql import types as Tsc_conf = SparkConf().setAppName('b2b_fraud_data')spark = SparkSession.builder.config(conf=sc_conf).enableHiveSupport().getOrCreate()
  • 而对于上述的两个class来说,经常对创建相关的临时表,createOrReplaceTempView:创建临时视图,此视图的生命周期与用于创建此数据集的[SparkSession]相关联。
    createGlobalTempView:创建全局临时视图,此时图的生命周期与Spark Application绑定。如果想要删除的话就得使用spark.catalog.dropGlobalTempView(“tempViewName”)

2.2 创建或使用现有Hive表

  假设我们有一个名为existing_hive_table的Hive表,我们将在此基础上增加新列。,具体代码如下所示:

from pyspark.sql import Row# 假设我们想要增加一个名为'new_column'的列,类型为String
addColumnStatement = """
ALTER TABLE existing_hive_table
ADD COLUMNS (new_column STRING)
"""spark.sql(addColumnStatement)

2.3 使用PySpark为列添加注释

  为’new_column’添加注释,具体的代码如下所示:

# 为'new_column'添加注释
addCommentStatement = """
COMMENT ON COLUMN existing_hive_table.new_column
IS 'This is the new column added to the table'
"""spark.sql(addCommentStatement)

💡 3. 高级用法

3.1 批量增加多个列

  如果需要批量增加多个列,可以在ADD COLUMNS语句中列出所有新列及其类型。,具体的操作代码如下所示:

addColumnsMultipleStatement = """
ALTER TABLE existing_hive_table
ADD COLUMNS (column1 STRING COMMENT 'Comment for column1', column2 INT COMMENT 'Comment for column2')
"""spark.sql(addColumnsMultipleStatement)

3.2 在增加列时直接添加注释

  可以在增加列的同时直接为其添加注释,避免使用单独的命令。,具体的操作代码如下所示:

# 根据年龄创建更详细的年龄组标签
# 根据年龄和性别创建不同的标签
df_with_custom_label = df.withColumn("custom_label", when((df.age >= 18) & (df.name == "Alice"), "Adult Alice").when((df.age >= 65), "Senior").otherwise("General"))
df_with_custom_label.show()+---+-----+---+-----------+
| id| name|age|custom_label|
+---+-----+---+-----------+
|  1|Alice| 25|  Adult Alice|
|  2|  Bob| 30|       General|
|  3|Charlie| 22|       General|

💡 4. 注意事项

  • 确保在执行Hive DDL语句之前,SparkSession已经启用了对Hive的支持。
  • 在增加列或添加注释之前,确保这些列或注释在表中不存在,以避免重复。
  • 使用合适的数据类型和注释内容,以确保数据的准确性和可读性。

💡 5. 总结

  通过PySpark,我们可以方便地对Hive表进行结构调整,包括增加新列和为列添加注释。这些操作有助于维护数据的组织结构和提高数据的可用性。本博客提供了如何使用PySpark执行这些操作的示例,希望能够帮助您更好地管理和优化您的Hive表结构。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 简单的射箭小游戏网页源码
  • 表字段显示tip
  • 【数据结构题目】循环队列,以及队列实现栈的模拟
  • C语言 | Leetcode C语言题解之第332题重新安排行程
  • Android 下载安装配置
  • 探索Python模块搜索路径的奥秘
  • Python中的责任链模式:构建灵活的请求处理机制
  • Python知识点:使用FastAI进行快速深度学习模型构建
  • 初学java第一天:写一下熟悉的猜数字小游戏
  • C#类继承自泛型集合
  • Linux 进程调度(二)之进程的上下文切换
  • Vue2与Vue3响应式原理对比
  • 基于cookie的会话保持
  • linux的UDP通讯方式
  • 暑期破防实录——捡漏腾讯
  • CSS 专业技巧
  • Javascript设计模式学习之Observer(观察者)模式
  • Kibana配置logstash,报表一体化
  • mongo索引构建
  • SwizzleMethod 黑魔法
  • vue--为什么data属性必须是一个函数
  • 对象引论
  • 那些被忽略的 JavaScript 数组方法细节
  • 学习笔记:对象,原型和继承(1)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax,axios,fetch三种ajax请求的区别
  • (2.2w字)前端单元测试之Jest详解篇
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (论文阅读40-45)图像描述1
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)Sql Server 保留几位小数的两种做法
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .libPaths()设置包加载目录
  • .NET 4.0中的泛型协变和反变
  • .NET Standard 的管理策略
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 使用配置文件
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [20171101]rman to destination.txt
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [C# 网络编程系列]专题六:UDP编程
  • [c#基础]DataTable的Select方法
  • [C语言]一维数组二维数组的大小
  • [Design Pattern] 工厂方法模式