【Pyspark-驯化】一文搞懂Pyspark写入hive表的使用技巧

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

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

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

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

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

文章目录

    • 1.基本介绍
    • 2. 代码用法
      • 2.1 初始化spark环境
      • 2.2 创建临时表
      • 2.3 创建Hive表
      • 2.3 将数据插入Hive表
    • 3. 高级用法
      • 3.1 动态表名和分区
      • 3.2 数据类型和格式转换
    • 4. 注意事项
    • 5. 总结

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

1.基本介绍

  在大数据处理中,经常需要将数据从临时存储转换到持久化存储中。PySpark提供了丰富的API,允许用户轻松地创建Hive表,并将数据从DataFrame或临时表写入。本文将介绍如何使用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 创建临时表

  假设df_res是一个已经存在的DataFrame,我们将创建一个临时视图。,具体代码如下所示:

# 创建临时表
df_res.createOrReplaceTempView("temp_table")


2.3 创建Hive表

  定义Hive表结构,并使用CREATE TABLE语句创建表,具体的代码如下所示:

table_name = "hive_notes"

# 创建Hive表
spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {table_name}
    (
        sign_id STRING COMMENT "id",
        date STRING COMMENT "创建日期",
        content STRING COMMENT "content内容,分隔符#$#",
        build STRING COMMENT "楼号内容,分隔符#$#",
        wc STRING COMMENT "生间内容,分隔符#$#",
        company STRING COMMENT "笔,分隔符#$#",
        charge STRING COMMENT "换电柜内容,分隔符#$#",
        exit STRING COMMENT "出入口内容,分隔符#$#"
    ) COMMENT '骑手笔记数据清洗内容'
    PARTITIONED BY (dt STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    LINES TERMINATED BY '\n'
    STORED AS TEXTFILE
""")

2.3 将数据插入Hive表

  使用INSERT OVERWRITE语句将临时表中的数据插入Hive表。,具体的代码如下所示:

days = "20230310"  # 示例日期

spark.sql(f"""
    INSERT OVERWRITE TABLE {table_name} PARTITION(dt)
    SELECT sign_id, date, content, build, wc, company, charge, exit, '{days}'
    FROM temp_table
""")

3. 高级用法

3.1 动态表名和分区

  在实际应用中,表名和分区可能需要动态指定,可以通过变量传递或配置文件来实现

3.2 数据类型和格式转换

  在将数据从临时表写入Hive表时,可能需要对数据类型或格式进行转换,以确保数据的一致性和准确性。

4. 注意事项

  • 确保SparkSession启用了对Hive的支持。
  • 在创建Hive表之前,检查表名和分区字段是否符合Hive的命名规范。
  • 使用PARTITIONED BY子句时,确保分区字段在源数据中有对应的值。
  • 考虑数据的存储格式和压缩选项,以优化存储效率和查询性能。

5. 总结

  本文介绍了如何使用PySpark创建Hive表,为列添加注释,并从临时表中导入数据。通过示例代码,我们展示了创建表、定义数据类型和注释、以及数据导入的完整流程。希望这篇博客能够帮助您更好地理解PySpark与Hive的集成,并应用于实际的数据存储和管理任务中。

你可能感兴趣的:(pyspark,大数据,hive,hadoop,数据仓库,spark,分布式,pyspark,hdfs)