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

news2024/9/22 4:01:15

【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 SparkConf
    from pyspark import SparkContext
    from pyspark.sql import SparkSession
    from pyspark.sql import SQLContext
    from pyspark.sql import Row
    from pyspark.sql.types import StructType
    from pyspark.sql.types import StructField
    from pyspark.sql.types import StringType
    from pyspark.sql import functions as fn
    from pyspark.sql import types as T
    sc_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表结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11 STL中的Vector使用细节

容器 支持泛型 Vector常用成员函数示例迭代器操作插入和删除操作 与find 配合:vector 一些复杂操作 Vector 的内存管理策略压入对象 需要无参构造.压入对象指针 高效插入和删除 迭代器失效 代码优化: 二维及多维空间生成 容器 支持泛型 vector<int> vi;vector<double…

中国数据库的前世今生:披荆斩棘,乘风破浪

文章目录 前言国外数据库技术蓬勃发展中国信息化起步与发展&#xff08;数据库技术探索&#xff09;国外数据库商战策略解决燃眉之急学习先进技术 数据库技术的新格局雷声大雨点小的千年虫新型数据库的诞生国产数据库展露头脚 开源助力国产数据库弯道超车去“IOE”化大数据席卷…

使用OIDC登录kubesphere遇到的坑细节

1.通过代理telepresence到本地调试&#xff0c;使用默认账号密码&#xff0c;提示账号密码错误。 2.kubesphere在sso登录的时候&#xff0c;提示签名错误&#xff0c;其实这个错误不是很明确&#xff0c;所以要到本地调试&#xff0c;找到根本原因。 # 错误1 Tnauthorized: fa…

《Linux运维总结:基于ARM64架构CPU使用docker-compose一键离线部署etcd 3.5.15容器版分布式集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面对不同的客户部署业务系统&#xff0…

skywalking架构

1.整体架构 整个架构&#xff0c;分成上、下、左、右四部分&#xff1a; 在SkyWalking中&#xff0c;trace 数据和 metrics 数据是两种关键的监控数据类型&#xff0c;它们帮助你理解应用的运行状态、性能瓶颈和故障点 1.1Trace 数据 Trace 数据是分布式追踪数据&#xff0c;它…

【原创】java+springboot+mysql学业跟踪指导管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Centos7安装jdk1.6(jdk-6u45-linux-x64.bin)

目录 一&#xff0c;查看是否安装jdk&#xff1a;二&#xff0c;下载安装文件&#xff1a;三&#xff0c;开始安装a. jdk-6u45-linux-x64-rpm.bin文件安装&#xff1a;b. jdk-6u45-linux-x64.bin文件安装【建议安装此文件】&#xff1a; 四&#xff0c;配置环境变量&#xff1a…

37.docker拉取镜像失败和创建mysql5.6容器

问题 docker pull 拉取镜像文件超时&#xff0c;网络连接不上。 解决方案 在/etc/docker目录下创建daemon.json文件。 文件内容为&#xff1a; { "builder": { "gc": { "defaultKeepStorage": "20GB", "en…

计算机视觉-CS231n

Image classifcation knnRegularizationBack PropagationNeural NetworksConvolutional Networks Training Neural Networks Deep learning 、CNN、RNN Detection and segmentation Visualizing and understanding GAN、Reinforcement learning Generative models

城市信息模型:构建未来智慧城市之基底座

在智慧城市的宏大叙事中&#xff0c;城市信息模型&#xff08;City Information Model, CIM&#xff09;平台如同城市智能的神经中枢&#xff0c;将数据、空间与技术深度融合&#xff0c;为城市规划、管理、服务、居民生活提供了前所未有的洞察与优化途径。CIM平台的构建不仅是…

【Python系列】txt文件读取操作

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

使用mybatis注解和xml映射执行javaWeb中增删改查等操作

Mapper接口 使用注解执行SQL语句操作和相应的Java抽象类&#xff08;对于简单的增删改查使用注解&#xff09; Mapper public interface EmpMapper {// 根据id删除员工信息Delete("delete from mybatis.emp where id#{id}")public int EmpDelete(Integer id);// 查…

2024年最新版小程序云开发数据模型的开通步骤,开始开发微信小程序前的准备工作,认真看完奥!

小程序官方又改版了&#xff0c;搞得石头哥不得不紧急的再新出一版&#xff0c;教大家开通最新版的数据模型。官方既然主推数据模型&#xff0c;那我们就先看看看新版的数据模型到底是什么。 一&#xff0c;什么是数据模型 数据模型是什么 数据模型是一个用于组织和管理数据的…

k-means聚类算法k-means++聚类算法

k-means聚类算法&k-means聚类算法 聚类(Clustering) 是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇&#xff0c;使得同一个簇内的数据对象的相似性尽可能大&#xff0c;同时不在同一个簇中的数据对象的差异性也尽可能地大。也就是说&#xff0c;聚类后同一类的…

从战略到系统架构:信息系统设计的全面解析

在当今数字化时代&#xff0c;信息系统已成为企业运营、管理和创新的核心驱动力。信息系统设计的重要性不仅关乎企业的技术实现&#xff0c;更直接影响到企业的战略执行和市场竞争能力。本文将从战略视角出发&#xff0c;深入探讨信息系统设计的全过程&#xff0c;包括从战略制…

使用Nexus搭建Maven私服仓库

一、私服仓库简介 在Java的世界中&#xff0c;我们通常使用Maven的依赖体系来管理构件&#xff08;artifact&#xff0c;又称为二方库或三方库&#xff09;的依赖&#xff0c;Maven仓库用于存储这些构件。一般的远程仓库&#xff08;比如Maven Central&#xff09;只提供下载功…

微信小程序中实现自动滚动

使用scroll-view组件的scroll-into-view属性&#xff1a; <scroll-view class"container" scroll-y"{{true}}" scroll-into-view"recordBottomScroll"><view class"text_style" style"color: #252526;">{{te…

Ubuntu20.04 源码安装 OMPL 与 Moveit

文章目录 一、源码安装OMPL1.1 先检查是否已安装二进制 ompl1.2 若已经提前安装二进制&#xff0c;需先行卸载1.3 OMPL官网安装教程 二、源码安装 moveit2.1 先检查是否已安装二进制Moveit2.2 源码安装 Moveit2.2.1、更新软件包2.2.2、安装依赖2.2.3、创建Moveit工作空间2.2.4…

8月12日学习笔记 DNS补充

一&#xff0c;DNS工作原理 查询方式 1.递归查询&#xff0c;逐级查询&#xff0c;一次到位&#xff0c;但是速度慢 2.迭代查询&#xff0c;多次查询一个地址&#xff0c;可以缓存 一次递归&#xff0c;多次迭代 dig解析域名 yum -y install bind-utils.x86_64 dig trace …