使用HiveQL在Hive数据库中建表

本文介绍了HiveQL以及在Hive数据库中建表写表的命令。

一、HiveQL简介

HiveQL是一种用于Apache Hive的查询语言,类似于传统的SQL(结构化查询语言)。Hive是一个构建在Hadoop上的数据仓库,允许对存储在Hadoop分布式文件系统(HDFS)中的数据执行SQL查询。

二、使用HiveQL在Hive数据库中的建表命令

1. 建表

# 导入必要的包和模块
from pyspark import SparkContext
from pyspark import SparkConf
from pyspark import HiveContext
from pyspark.sql import SparkSession

# 表名称和数据库:数据库‘DB’中创建名为‘tableName’的表
# 表结构:表的列名,字符串/浮点数等类型,COMMENT注释解释列的用途
# 分区:Hive中用于提高查询性能和数据管理,本例中为school_id和date
# 存储格式:ORC:Optimized Row Columnar 列存储格式

tableName = 'table_name'

construct_str = """CREATE TABLE IF NOT EXISTS
DB."""+tableName+"""(
column1_name string COMMENT 'student_id', 
column2_name string COMMENT 'grade', 
column3_name int COMMENT 'class'
)
COMMENT 'table_name'
PARTITIONED BY(
school_id STRING COMMENT 'school_id',
date long COMMENT 'date')
STORED AS ORC"""

hiveContext.sql(construct_str)  # 执行建表语句,创建表

2. 向Hive表中添加新列

# 向表中添加新列 column1和column2 
tableName = 'table_name'   #表名称

# 添加新列的语句
alter_table_str = f"""
ALTER TABLE DB_name.{tableName} 
ADD COLUMNS (
    column1 float COMMENT 'score1',
    column2 float COMMENT 'score2'
)
"""

# 执行添加新列的语句
hiveContext.sql(alter_table_str)

3. 删除Hive表

# 删除表:delete TABLE
tableName = 'table_name'   #表名称

# 删除表的语句
drop_table_str = f"DROP TABLE IF EXISTS DB_name.{tableName}"

# 执行删除表的语句
hiveContext.sql(drop_table_str)

4. 向表中写入数据

dt是已经创建好的DateFrame。注意select选择的顺序与创建表时候的顺序应该是完全一致的

from pyspark.sql import functions
result = dt.select(
            functions.col("column1"),
            functions.col("column2"),
            functions.col("column3"),
            functions.col("fenqu1"),
            functions.lit(date).alias("fenqu2")
        )

result.write.insertInto("DB_name.table_name", overwrite=True)

补充:我也尝试删除表中的列,但是由于权限等原因,一直没有成功,期待有经验的大神指正分享!

于2024年12月30日第一次发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值