hive根据已有表创建新表_Hive基础之创建表
1.创建基础表
在这个网页里详细记录了创建表的每个语法,下面就一一来看这些创建表的语法内容:
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name
``[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
``[COMMENT table_comment]
[ROW FORMAT row_format]
[LOCATION hdfs_path]
其中db_name指的是hive中数据库的名称,默认是default,第二行是定义表的列名称及列描述,第三行是表的描述。以常用的日志为例来创建一张hive的表:
create table IF NOT EXISTS default.log_test (
ip string COMMENT 'client ip address',
user string ,
request_url string COMMENT 'client request url'
) COMMENT 'Test access log';
hive中的表需要映射到hdfs文件中,所以需要定义文件中的每一行之间的分隔符,每一列之间的分隔符。增加行分隔符的语句如下:
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
这句的意思是以空格来分隔行数据,那么这一行中的数据只要遇到一个空格就可以划分为一个数据。这里的分隔符可以是其他字符,比如",","#","|"等,一般只要用数据文件中可以区分每一行中的不同数据即可。
列与列直接的分隔符通常是以换行符来区分,可以用如下的语句来指定:
`COLLECTION ITEMS TERMINATED BY '\n'
通常列与列直接的分隔符是不需要写的。
[STORED AS file_format]是指定文件的类型,保存在hive中的文件的类型有多种,一般简单就保存为文本格式,即TEXTFILE,但是企业中一般不使用这种格式来保存数据,主要是因为文本格式占的空间比较大,不利于大数据分析。企业中一般使用ORC和PARQUET两种文件类型来保存,具体的会在后面讲解。
通过[LOCATION hdfs_path]可以在创建表的时候指定该表映射到到hdfs的文件路径,默认是映射到/user/hive/warehouse目录下。
完整的建表语句如下:
create table IF NOT EXISTS default.log_test (
ip string COMMENT 'client ip address',
user string , 0
request_url string COMMENT 'client request url'
) COMMENT 'Test access log'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
location '/user/hadoop/warehouse/log_test'
STORED AS TEXTFILE ;
2.创建子表
[AS select_statement]这个语句是用来通过查询已有的表来创建一张新表,这样可以根据已有的表来创建子表,对于数据分析和优化都是有很大的好处的。相应的创建语句如下:
create table IF NOT EXISTS default.log_test_sl as select ip,user from default.log_test;
3.创建相同结构的表
另外一种创建表的方式如下:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
``LIKE existing_table_or_view_name
``[LOCATION hdfs_path];
由于日志是每天都会产生的,而且每天的日志格式都是一样的,我们没有必要每次都创建相同的表,上面这种创建表的方式就是根据已经存在的表来创建新的表,而新的表和已经存在的表表结构是一样的,但是数据可以映射到不同的hdfs文件上。
create table IF NOT EXISTS default.log_test_like like default.log_test;
hive根据已有表创建新表_Hive基础之创建表相关推荐
- Python+django网页设计入门(19):创建新模型扩展自带用户表的字段
公众号送书活动火热进行中:新学期福利,送18本Python图书 ================== 前导课程: Python+django网页设计入门(18):自定义模板过滤器 Python+dja ...
- SQL Server2005创建新数据库时不允许创建新数据库的问题
今天早上来公司后,突然发现SQL Server2005出了问题,在管理器中居然不能创建新数据库了,使用SQL语句创建也不行,昨天还好好的,还弹出了如下对话框: 使用SQL语句创建SQL Server则 ...
- win7计算机创建新用户,win7系统无法创建新用户的解决方法
很多小伙伴都遇到过win7系统无法创建新用户的困惑吧,一些朋友看过网上零散的win7系统无法创建新用户的处理方法,并没有完完全全明白win7系统无法创建新用户是如何解决的,今天小编准备了简单的解决办法 ...
- IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块
文章目录 添加模块的入口 创建新的项目模块 添加模块的入口 添加新的模块的入口有两个,如下图所示: 第一种方式,[File] --> [New] --> [Module]: 第二种方式,打 ...
- html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...
我们所熟知的HTM5软件是一款非常强大功能的软件,据我了解HTM5软件的特色也是非常有优势的.我们先来介绍一下它的优势: HTML5可以提供: ①:提高可用性和改进用户的友好体验; ②:有几个新的标签 ...
- html图片热点新窗口,HTML基础必看---表单,图片热点,网页划区和拼接详解
html表单里面的图片点击相应图片跳转到本页其他去在表格里面选了这个 鼠标点击一下跳转到相应区块 代码要怎么写,夜影驱动编程小编今天和大家分享大神需要在一张图片上设置多个能点击跳转的链接区域时,推荐使 ...
- Oracle创建新用户(win10本地创建)
在dos下连接到数据库 sqlplus / as sysdba 创建临时表空间 create temporary tablespace bi_temp tempfile 'D:\java\Oracle ...
- Linux内创建新用户,linux下手工创建新用户
当我们要创建一个用户时,通常使用useradd命令就可以自动创建了一个用户:实际上,在linux下,一切皆文件,设置好几个文件,也是可以创建出一个用户: 文件如下: /etc/passwd :用户 ...
- mysql建表实例 删除记录_python基础_mysql建表、编辑、删除、查询、更新
importpymysqlclassMysql():defcreate(self):try: sql_creat= """CREATE TABLE data_test( ...
最新文章
- hdu6989 (莫队+单调栈+ST表)
- 《CCNA无线640-722认证考试指南》——9.3节集中式架构
- 【spring-session】store-type
- anguler 画面布局适应屏幕大小_前端开发常见的五大布局模式,绝对不要错过这篇分享!...
- java将ascii数组转成unicode字串
- html:(34):下划线和删除线
- 001 基本的环境的安装
- 系统调用之creat
- 微软更新iOS版Skype:新增@功能,一键召唤好友
- 深度学习双显卡配置_gpu – 我可以在笔记本电脑上使用intel高清显卡实现深度学习模型...
- stm8s + si4463 寄存器配置
- UTC时间转北京时间
- 2进制-16进制-补码
- 删除后别人的微信号变成wxid_怎么恢复删除的微信好友?教程在手,不怕恢复不了!_...
- kubelet启动pod源码分析(三)
- 小学期助教感受-Funcode游戏编程
- MATLAB函数合辑
- 榕树贷款 探索人工智能技术 打造金融机构转型新引擎
- Java编程语言介绍
- 哪里有英语,哪里有欢乐