HIVE建表详细教程

news2024/11/23 8:06:03

1. 注意事项如下

1.1 分区字段

        可以有多个分区字段,一般以时间维度来建立分区,也可以再加其他字段。以业务场景为提前条件,来设定分区的字段。
        从业务角度理解,分区字段可理解为业务数据的一部分,作为业务查询的一个条件。
        从技术角度理解,分区字段是表外字段,不作为源表数据结构的字段【但也可以源表的业务字段,抽取出来作为分区字段,方便业务数据处理】,这是个人的理解,如果不对请联系本人。

PARTITIONED BY ( 
`plant_time` string COMMENT '工厂时间')

1.2 分隔符

        建立使用 \u0001

        hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符。hive中默认使用^A(ctrl+A)作为列分割符,如果用户需要指定的话,等同于row format delimited fields terminated by '\001',因为^A八进制编码体现为'\001'。如果使用默认的分隔符,在建表时,可以不指定分割符,什么都不加;也可以按照上面的指定加‘\001’为列分隔符,效果一样。       

        hive默认使用的行分隔符是'\n'分隔符 ,也可以加一句:LINES TERMINATED BY '\n' 。如果在建表时,加不加效果一样。但是区别是hive可以通过row format delimited fields terminated by '\t'这个语句来指定不同的分隔符。但是hive不能够通过LINES TERMINATED BY '$$'来指定行分隔符,目前Hive的默认行分隔符仅支持‘\n’字符, 否则执行会报错。

如下所示:一些特殊字符

 查看隐藏字符的方法:

cat  -A filename

vim
使用vim进入编辑文件的命令模式,使用以下命令:

set list #显示隐藏字符
set nolist #取消显示隐藏字符

 1.3 存储格式

         本人建议使用 ORC  存储格式

Hive支持的存储数据的格式主要有存储形式
TEXTFILE行式存储
SEQUENCEFILE行式存储
ORC列式存储
PARQUET列式存储

1.3.1 列式存储和行式存储

行存储的特点: 查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方。列存储则需要去每个聚集的字段找到对应的每个列的值,所以此时行存储查询的速度更快。

列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。

TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的;
ORC和PARQUET是基于列式存储的。


使用如下命令

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' STORED AS ORC ;

2  建表语句实例

-- dwd.dwd_sap_mm_coois_history definition

CREATE TABLE `dwd.dwd_sap_mm_coois_history`(
  `charg` string COMMENT '批次', 
  `matnr` string COMMENT '物料', 
  `maktx` string COMMENT '物料描述', 
  `lgort` string COMMENT '库存地点', 
  `bwart` string COMMENT '移动类型', 
  `einheit` string COMMENT '未清数量 (EINHEIT)', 
  `aufnr` string COMMENT '订单', 
  `bdter` string COMMENT '需求日期', 
  `werks` string COMMENT '工厂', 
  `lmeng` string COMMENT '需求数量', 
  `zzline` string COMMENT '线别', 
  `baugr` string COMMENT '追溯需求', 
  `bdmng` string COMMENT '需求数量 (EINHEIT)', 
  `enmng` string COMMENT '撤回数量 (EINHEIT)', 
  `txt04` string COMMENT '系统状态', 
  `flmng` string COMMENT '短缺 (EINHEIT)', 
  `ktext` string COMMENT '工作中心说明', 
  `arbpl` string COMMENT '工作中心', 
  `udate` string COMMENT '在制天数',
   create_by string  comment '建立者',
   create_time timestamp   comment '建立时间',
   update_by string  comment '最后更新者',
   update_time timestamp  comment '最后更新时间',
   remark string  comment '备注'
  )
COMMENT '工单领料基本表 '
PARTITIONED BY ( 
`plant_time` string COMMENT '工厂时间')
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' STORED AS ORC ;

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

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

相关文章

Bed Bath and Beyond EDI 需求分析

Bed Bath and Beyond(Bed Bath and Beyond)是一家美国的家居用品零售商,成立于1971年,总部位于新泽西州Union。该公司在美国、加拿大和墨西哥拥有超过1500家门店。其产品涵盖了床上用品、浴室用品、厨房用品、家居装饰等领域&…

Win11怎么添加用户?我们都知道系统一般默认是administraor用户

Win11怎么添加用户?我们都知道系统一般默认是administraor用户,但如果你还想添加新用户的话,那么可以参考以下操作哦,步骤简单,安全有效,我们一起来学习下吧。 具体操作如下: 1、首先&#xff0…

NXP MCUXPresso - cc1plus.exe: out of memory allocating 65536 bytes

文章目录 NXP MCUXPresso - cc1plus.exe: out of memory allocating 65536 bytes概述实验结论补充END NXP MCUXPresso - cc1plus.exe: out of memory allocating 65536 bytes 概述 在尝试迁移 openpnp - Smoothieware project 从gcc命令行 MRI调试方式 到NXP MCUXpresso工程…

iscsi删除已失效的链路

有套rac环境,主机连接存储使用的iscsi方式,使用了一段时间,客户感觉网络设计不合理,需要调整网段vlan和ip地址 首先关闭实例和集群,调整存储端和主机端的ip地址和vlan,调整后可以ping通,使用如…

隐藏自己的真实ip

本文转载于: https://blog.csdn.net/csdnmmd/article/details/126952312 1.ip查看 https://mp.weixin.qq.com/s/zs2clrxQts9f7pK6CQ2oOw 1.1 无隧道的情况 当前从138和请求ipinof.io上可以查到目前我的ip地址为真实的ip: 访问下面这个地址之后&#xff…

SVG矢量图怎么做?

SVG 矢量图是一种可缩放的图像格式,基于 XML 的标记语言。它可以用于描述二维矢量图形,并且具有数百种功能,能够帮助你创建出色的网站。SVG矢量图怎么做?在本教程中,我们将学习如何使用SVG矢量图编辑器——即时设计制作…

一种基于非均匀分簇和建立簇间路由的算法的无线传感器网络路由协议(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本文准备了一种路由方法,该方法使传感器通过有效地使用能量将数据从发送方加载到接收器,因为它在 LEAC…

安装Ubuntu18.04双系统、干净卸载,并在Ubuntu系统中安装CARLA模拟器

Ubuntu系统安装 Ubuntu系统安装参照流程 Ubuntu 双系统安装流程_ubuntu双系统_地球被支点撬走啦的博客-CSDN博客 Ubuntu系统卸载 1.将开机启动项设置默认为Windows,进入BIOS设置界面调整BootDevice中Windows和Ubuntu的顺序,将Windows调整在Ubuntu前边…

封神之作!超火Java面试突击手册一周内转发2.4W次,最终被所有大厂封杀

前言 本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 本来想将文件上传到github上,但由于文件太大有的都无法显示…

OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块

文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…

研发工程师玩转Kubernetes——部署应用

Kubernetes是容器的管理编排工具,而容器则是程序的载体。我们先在Docker上部署应用,然后再在kubernetes上部署,并对它们进行对比学习。 Docker部署应用 查看运行中的容器 docker ps可以看到下面的表头,此时没有一个运行中的容器…

图片压缩指定大小,让您的图片高效而优美

在现代社会中,图片是我们不可或缺的一部分,在各行业中都有着非常重要的作用。但是,大尺寸的图片不仅会占用过多的存储空间,还会导致网页或应用程序的加载速度变慢。因此,将图片压缩到指定大小是一个必要的步骤。 图片…

文档管理-gitlab+markdown网页插件

特点 使用git进行版本管理,本地编辑使用Typora。使用gitlab进行权限管理可以在线阅读通过Markdown在线阅读插件实现,可显示目录显示与链接跳转,界面优于自带的wiki。 与其他方式对比 gitlab的wiki:显示界面效果不好&#xff0c…

书籍《脆弱的繁华》读后感

前几周看完了《脆弱的繁华》这本书,这本书当时是公司组织的一次活动,邀请书籍原作者,张程对书籍进行了讲解,同时这本书也是在此次活动中免费赠送的,作者对于书籍做了一些说明,并且对一些问题也进行了探讨&a…

Azkaban 集群模式部署

文章目录 Azkaban 集群模式部署一、配置Mysql Azkaban 集群模式部署 将这三个包,上传到hadoop102,第一个是azkaban需要的建表语句 这三个解压到 /opt 目录下 输入命令:tar -zxvf azkaban-db-3.84.4.tar.gz -C /opt/ 输入命令:ta…

spring注册beanDefinition

代码使用springboot测试 1.ConfigurationClassPostProcessor 构造context时会创建reader。 构造reader时会创建processor。 最关键是第一个,类型是ConfigurationClassPostProcessor。 AbstractApplicationContext类的refresh方法的invokeBeanFactoryPostProcesso…

Node输出日志的正确姿势

背景 每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助调试程序,比如System.out.println或console.log。解决后,就会将这些语句删除,周而复始。 但是通过系统日志输出的日志格式都是这种: // output console.log(&quo…

TensoRF-张量辐射场论文笔记

TensoRF-张量辐射场论文笔记_什度学习的博客-CSDN博客 注释代码: https://github.com/xunull/read-TensoRF 官方源码:https://github.com/apchenstu/TensoRF Install environment conda create -n TensoRF python3.8 conda activate TensoRF pip install torch t…

HTTPTomcatServlet学习

HTTP&Tomcat 今日目标: 了解JavaWeb开发的技术栈理解HTTP协议和HTTP请求与响应数据的格式掌握Tomcat的使用掌握在IDEA中使用Tomcat插件理解Servlet的执行流程和生命周期掌握Servlet的使用和相关配置 1. Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&…

正点原子串口算法解析-定时器+数组长度判断

源码 片段1 片段2 片段3 解析 片段1的作用 开启一个10ms的定时器 片段2的作用 每10毫秒置位接收标志位且关闭定时器 片段3的作用和详解 代码第38行 用res变量接收数据 从代码第39行开始看 接收标志位不允许接收(不为0) 下面的所有代码都不会运行 如果接收标志为允许接收…