hive创建表和增加表分区的两种方式

02-Hive一个表创建另一个表,表分区,分桶 声明:如果你是初学者,看我这篇文章的时候,看我上一篇会更好。 Hive表的创建:http://blog.youkuaiyun.com/qq_29622761/article/details/51564680这篇的主要内容目录是: 由一个表创建另一个表 hive不同文件读取对比 hive分区表 hive分桶 你现在开始吧! 1. 由一个表创建另一个表 格式:ceate table test3 like te 阅读详情

hive表增加分区的两种方式


第一种方式:load data local inpath
注意点:
1.必须是本地文件,不能是集群上的文件
2.文件路径中的变量如果无法替换,可以把单引号换成双引号,一般双引号总是没问题的

3.hive库在配置的时候有一个hdfs基础路径,用这种方式创建的表时可以不指定hdfs路径,导入数据后会自然在“hdfs基础路径/表名/”下生成相应的分区文件夹
4.用desc formatted table_name;可以查看hdfs路径

# 加载数据的脚本如下

#!/bin/sh
if [[ $# -eq 1 ]];then
    dt="${1}"
else
    echo "无输入时间,请传入一个时间参数给程序"
    exit 1
fi

queryengine --sessionconf engine=wing -e"
SET mapred.job.priority=VERY_HIGH;
SET hive.merge.mapredfiles=true;
SET hive.merge.size.per.task=536870912;
SET hive.merge.smallfiles.avgsize=536870912;
SET mapred.job.name=log_day_'${dt}';

ADD FILE '/home/work/local/log_pretty/${dt}.log';
load data local inpath '${dt}.log' overwrite INTO
    TABLE default.log_day PARTITION (pdate = '${dt}');
;"

if [[ $? -eq 0 ]];then
    echo "数据入库正常........."
    exit 0
else
    echo "数据入库出现异常.........."
    exit 1
fi


# 创建表的语句如下

USE default;
CREATE TABLE log_day (   
    req_date                                STRING COMMENT '请求日期',
    req_time                                STRING COMMENT '请求时间',
    user_id                                 BIGINT COMMENT '用户id',
    url                                     STRING COMMENT 'url',
    module                                  STRING COMMENT '模块名',
    operation                               STRING COMMENT '操作名',
    task_id                                 BIGINT COMMENT '任务id'
)
COMMENT '清洗后的日志'
PARTITIONED BY(pdate STRING)
ROW FORMAT CHARSET 'UTF8'
DELIMITED FIELDS TERMINATED BY '\001'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE ;


第二种方式:创建外部表然后增加分区
注意点:
1. location的全路径是创建表时的hdfs路径加上location中指定的分区文件夹
2. 删除分区时不会删除hdfs数据

# 增加分区的脚本如下

hour_interval=-1
startday=`date "+%Y%m%d"`
tmp_time=`date -d "$startday  $hour_interval days" "+%Y%m%d%H"`
cur_date=${tmp_time:0:8}
cur_hour=${tmp_time:8:2}

while [ 1 ]
do
        hive -e "use default; ALTER TABLE detail_report ADD IF NOT EXISTS PARTITION (dt = $cur_date, hour = $cur_hour) location '$cur_date/$cur_hour';"
        tmp_time=`date -d "$cur_date $cur_hour +1 hours" "+%Y%m%d%H"`
        cur_date=${tmp_time:0:8}
        cur_hour=${tmp_time:8:2}

        tmp_time1=`date -d "+2 hours" "+%Y%m%d%H"`
        cur_date1=${tmp_time1:0:8}
        cur_hour1=${tmp_time1:8:2}
        if [ $cur_date1 -eq $cur_date -a $cur_hour1 -eq $cur_hour ]
        then
                sleep 3600
        fi
done

# 创建表的脚本如下

use default;
create EXTERNAL table
IF NOT EXISTS hive_table_name (
ac            string comment '',
res_type      string comment '',
install_date        string comment '',
install_time        string comment '',
ip                  string comment '',
uid             string comment ''
)
COMMENT ''
PARTITIONED BY(day STRING, hour STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION 'hdfs://xx/xx/xx/hive_table_name';


hive常用语句
查看分区 show partitions table_name;
查看表详情 desc formatted table_name;
查看建表语句 show create table table_name;
删除分区 ALTER TABLE hive_cfp_install_report DROP IF EXISTS PARTITION (day='20181003');

下面提供一个批量删除分区的方式

# 循环删除分区
#!/bin/sh
source /etc/profile
startdate=`date -d $1 +"%Y%m%d"`
tempdate=${startdate}
enddate=`date -d $2 +"%Y%m%d"`

# 将时间戳转成整数比大小
while [ $((tempdate)) -le $((enddate)) ]
do
      echo $tempdate "start####" # 20180801

      hive -e"
      use default;
      ALTER TABLE hive_report DROP IF EXISTS PARTITION (day='$tempdate');"
      tempdate=`date -d "1 day $tempdate" +"%Y%m%d"` # 20180802
done

 

hive创建表后怎么新增分区结构(创建表时没有创建分区) hive在创建表时没有添加分区结构(希望大家不要杠,硬说是字段,只要您高兴,您怎么说都行),增加分区结构的方法 阅读详情

相关推荐

Hive分区表修改(增删)列

Hive增加、删除列

0x3E6 3569

hive创建分区表 hive添加分区 hive删除分区

创建外部分区表 create external table if not exists 表名 ( id int comment '唯一id', name string comment '姓名', age string commnet '年龄' )partitioned by(dt string); 不指定表的路径默认存放在hdfs默认路径下 1.给表添加分区 alter table 表名 add if not exists partitions(dt='2021-11-11'); 2.添加.

qq_39130402的博客 1万+

Hive表DDL操作(一)

Hive表DDL操作(一);表分区;Create/Alter/Drop 数据库;Create/Drop/Truncate 表;Alter 表/列

qq_71139242的博客 8136

43- 大数据-hive 修改表六:添加分区

1、静态分区 1> 添加一个 alter table t2 add partition (city=‘shanghai’); 2> 添加多个 alter table t2 add partition (city=‘chengdu’) partition(city=‘tianjin’); 3> 添加分区指定位置 alter table log_mess add partiti...

yaoyelinger0912的博客 2919

查询所有HIVE表分区数据量

查询HIVE表分区的数据占用和行数,用于数据治理通常,每天一个分区;通常,今天查看昨天分区数据量本文日期分区字段为ymd

ArYe 9334

hive使用技巧(一)自动化动态分配表分区及修改hive表字段名称

Author:FuRenjie kwu -- hive使用技巧(一)自动化动态分配表分区及修改hive表字段名称

3722

hive 表创建及字段信息管理

1. 修改字段名或字段类型 hive表,能增加列,不可以删除列,但可以改列名; 对于分区表,要使用cascade才会对所有分区生效,否则,历史分区不会生效。 --修改字段名 alter table tablename change value1 value1_new string [cascade]; --修改字段类型 alter table tablename change column value1 value1 int [cascade]; --增加新字段 alter table tablen

MusicDancing的博客 1万+

Hive的基本操作之表分区

由于hive在查询时会做全表扫描,有些情况下我们只需要查询部分数据,为了避免全表扫描消耗资源和性能,我们可以实现表分区使之扫描部分表。 在hive中分区字段是一个伪字段,并不实际存储数据,可以作为条件用于查询。表分区就是会在表目录下面针对不同的分区创建一个子目录,如果有二级分区,那么会在一级子目录下面继续创建子目录。 分区应用: 进入目标库中 hive> use test_data; 一级分区应用: 建表 hive> create table if not exists parti

QYHuiiQ 6630

头歌 Hive表DDL操作(一)

头歌 Hive表DDL操作(一) 本实验任务要求使用Hive完成表分区操作,主要包括:在test4数据库创建分区表student,按stu_year和subject分区;添加两个分区(2018/Chinese和2018/Math);删除2018/Chinese分区。关键操作涉及创建分区表(PARTITIONED BY)、添加分区(ADD PARTITION)、重命名分区(RENAME TO PARTITION)和删除分区(DROP PARTITION)等DDL语句。

一名敲代码的苦13程序员 2096

Windows 11登录界面密码框消失Bug解析与解决方案

Windows操作系统登录认证机制是系统安全的第一道防线,其图形界面由桌面窗口管理器(DWM)负责渲染。当UI元素渲染异常时,会导致密码输入框等关键组件不可见。这类图形子系统故障通常源于驱动兼容性或主题服务冲突,在Windows 11最新累积更新后尤为常见。通过系统文件检查(sfc)、注册表修复或创建新用户等工程实践方法可有效解决问题。对于企业IT环境,建议采用PIN码或生物识别等替代认证方案,同时定期执行磁盘清理和系统健康检查等Windows维护操作,确保认证服务稳定运行。

weixin_33806859的博客 611

大模型训练显存瘦身全记录:从ZeRO-3参数分区到CPU Offload的硬件协奏曲

本文详细解析了如何通过ZeRO-3参数分区与CPU/NVMe卸载技术优化大模型训练的显存使用。结合bf16混合精度与梯度累积等策略,实现在消费级GPU上高效训练百亿参数模型,显著提升硬件利用率与训练效率。

weixin_29051245的博客 435

shell定时创建Hive表分区

首先看一下hive 的help命令: [hdfs@datanode003 hive]$ hive -h Missing argument for option: h usage: hive -d,--define Variable subsitution to apply to hive commands

ZhangBiao 的专栏 4184

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8124

Hive 创建表和使用jdbc连接教程 Hive命令

hive中表 ------------------- 1.managed table 托管表。 删除表时,数据也删除了。 2.external table 外部表。 删除表时,数据不删。 hive命令 ---------------- //创建表,external 外部表 $hive>CREATE ...

大尧酱的博客 1810

Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)

本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。

weixin_29876033的博客 387

【FF-A】第四章 Concepts

SPM的责任分为两个组件:SPM调度器(SPMD)和SPM核心(SPMC)。这两个组件都可以访问整个物理地址空间,并且是受信任的计算基础的一部分。当无需区分这两个组件时,术语SPM被使用。这些组件的责任如下所示。SPMD 位于 EL3 中,以 AArch64 或 AArch32 执行状态运行。SPMC 可以与 SPMD 共存在 EL3 中,也可以位于相邻的异常级别,即 S-EL1 或 S-EL2。SPM 在启动时初始化 EL3 LSP,并在运行时促进它们与其他端点之间的通信。

baron-周贺贺-代码改变世界ctw 1195

hive查看一张表的分区字段_Hive表分区与索引

hive表分区表分区是指将数据按照物理分层的方式进行区分开,加快查询的速度,同时也起到数据快照的作用!创建分区表的关键字:partitioned by ,可以指定单个字段也可以指定多个字段;partitioned by (dt String,country string);create table pt_test(ts bigint,line string)partitioned by (dt S...

weixin_39556590的博客 2209

《python算法与数据结构2000讲》算法与数据结构总结

《python算法与数据结构2000讲》算法与数据结构总结

IT 甄选推荐 1103

hive查看一张表的分区字段_hive表分区查看

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/u/c801d8028b0cHive Partitionsmysql> use metastore;select count(*) from DBS;+----------+| count(*) |+----------+| 4 |+----------+1 row in set...

weixin_39575410的博客 4453

k8s上分离集群seatunnel部署(生产推荐)

k8s上分离集群seatunnel部署(生产推荐)

寂夜了无痕的博客 886

【Hermes Agent】2026 Hermes Agent 最新入门级实战指南:从原理、部署、模型配置到落地 Demo

当下 Vibe Coding、AI 自动化时代,单纯对话大模型已经没有竞争力,

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 244

hive-创建表、添加、导出数据

hive

DCHAO的博客 1346

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Hive表分区操作

Hive在对数据进行查询的时候一般会对整个表进行扫描,当表很大的时候会消耗很多时间,有时候只是需要对表中的一部分数据进行扫描,因此Hive引入分区。 Hive分区不同于一般分布式系统下的范围分区,哈希分区,一致性分区等。Hive的分区是在Hive的表结构下面根据分区的字段设置将数据按照目录进行存放,相当于简单的索引功能。 Hive表分区需要在创建表的时候指定模式(Hive创建表的时候指定模式的

蔡先生的专栏 1383

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Hive创建表

1.创建普通表 hive> CREATE TABLE test_table(name STRING,userid INT,ip STRING COMMENT 'ip address of the user')COMMENT 'this is the test table'; hive> show tables; OK test_table Time taken: 0.492 se

蔡先生的专栏 1317

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hive创建mysql表_hive的数据定义之创建数据库和表

create database hive_db  //创建数据库hive_dbcreate table hive_db.test(字段内容及其格式省略)  //在数据库hive_db中创建test表create database student_db location '/user/hive/student.db'  //创建数据库student_db,但是在hdfs中显示student.db,在...

weixin_29356575的博客 727

hive中查看表的信息

目录查看表的分区情况模糊查看表查看表的创建语句查看表的结构信息(详细)简单查看表的结构信息查看表的扩展信息(信息更详细) 在hive中,我们可以通过命令查看表的创建语句、分区、及其他详细信息 查看表的分区情况 > show partitions new_partition; OK partition daystr=201501120030 daystr=201501120100 dayst...

fuyun6363的博客 1万+
上一篇: spark项目打包流程
下一篇: 自定义cp命令:当目标文件夹不存在时先创建
千淘万漉
博客等级 码龄10年 115粉丝 99原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值