当前位置: 首页 > news >正文

HIVE基本操作

1、启动远程服务端:hive --service metastore启动(这里是阻塞式),然后在客户端操作

2、Hive DDL(数据库定义语言)

--展示所有数据库show databases;
--切换数据库use database_name;

3、创建语法(建议拷贝到notepad++中,查看类型时比较方便有高亮)

/*创建表的操作基本语法:CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- 			(Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data_type [COMMENT col_comment], ... [constraint_specification])][COMMENT table_comment][PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)][CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] 				INTO num_buckets BUCKETS][SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 			0.10.0 and later)]ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)[STORED AS DIRECTORIES][[ROW FORMAT row_format] [STORED AS file_format]| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- 				(Note: Available in Hive 0.6.0 and later)][LOCATION hdfs_path][TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 			0.6.0 and later)[AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not 					supported for external tables)CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_nameLIKE existing_table_or_view_name[LOCATION hdfs_path];复杂数据类型data_type: primitive_type| array_type| map_type| struct_type| union_type  -- (Note: Available in Hive 0.7.0 and later)基本数据类型primitive_type: TINYINT| SMALLINT| INT| BIGINT| BOOLEAN| FLOAT| DOUBLE| DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)| STRING| BINARY      -- (Note: Available in Hive 0.8.0 and later)| TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)| DECIMAL     -- (Note: Available in Hive 0.11.0 and later)| DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)| DATE        -- (Note: Available in Hive 0.12.0 and later)| VARCHAR     -- (Note: Available in Hive 0.12.0 and later)| CHAR        -- (Note: Available in Hive 0.13.0 and later)array_type: ARRAY < data_type >map_type: MAP < primitive_type, data_type >struct_type: STRUCT < col_name : data_type [COMMENT col_comment], ...>union_type: UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and 			later)行格式规范row_format: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS 				TERMINATED BY char][MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char][NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, 				property_name=property_value, ...)]文件基本类型file_format:: SEQUENCEFILE| TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)| RCFILE      -- (Note: Available in Hive 0.6.0 and later)| ORC         -- (Note: Available in Hive 0.11.0 and later)| PARQUET     -- (Note: Available in Hive 0.13.0 and later)| AVRO        -- (Note: Available in Hive 0.14.0 and later)| JSONFILE    -- (Note: Available in Hive 4.0.0 and later)| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname表约束constraint_specification:: [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ][, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES 					table_name(col_name, ...) DISABLE NOVALIDATE 
*/
--创建普通hive表(不包含行定义格式)create table psn(id int,name string,likes array<string>,address map<string,string>)
--创建自定义行格式的hive表create table psn2(id int,name string,likes array<string>,address map<string,string>)row format delimitedfields terminated by ','collection items terminated by '-'map keys terminated by ':';
--创建hive的外部表(需要添加external和location的关键字)
create external table psn4(id int,name string,likes array<string>,address map<string,string>)row format delimitedfields terminated by ','collection items terminated by '-'map keys terminated by ':'location '/data';-- 在之前创建的表都属于hive的内部表(psn,psn2,psn3),而psn4属于hive的外部表,内部表跟外部表的区别:1、hive内部表创建的时候数据存储在hive的默认存储目录中,外部表在创建的时候需要制定额外的目录2、hive内部表删除的时候,会将元数据和数据都删除,而外部表只会删除元数据,不会删除数据
--应用场景:内部表:需要先创建表,然后向表中添加数据,适合做中间表的存储外部表:可以先创建表,再添加数据,也可以先有数据,再创建表,本质上是将hdfs的某一个目录的数据跟,hive的表关联映射起来,因此适合原始数据的存储,不会因为误操作将数据给删除掉
--创建多分区表create table psn6(id int,name string,likes array<string>,address map<string,string>)partitioned by(gender string,age int)row format delimitedfields terminated by ','collection items terminated by '-'map keys terminated by ':';	注意:1、当创建完分区表之后,在保存数据的时候,会在hdfs目录中看到分区列会成为一个目录,以多级目录的形式			  存在2、当创建多分区表之后,插入数据的时候不可以只添加一个分区列,需要将所有的分区列都添加值3、多分区表在添加分区列的值得时候,与顺序无关,与分区表的分区列的名称相关,按照名称就行匹配

加载数据文件到某一张表中
    语法:
        LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION         (partcol1=val1, partcol2=val2 ...)]
 
        LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION         (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde']             (3.0 or later)

加载本地数据到hive表
    load data local inpath '/root/data/data' into table psn;--(/root/data/data指的是本地linux目录)

加载hdfs数据文件到hive表
    load data inpath '/data/data' into table psn;--(/data/data指的是hdfs的目录)

注意:
        1、load操作不会对数据做任何的转换和修改操作
        2、从本地linux load local数据文件是复制文件到对应表目录下
        3、从hdfs load数据文件是移动文件到对应表目录下
        4、load操作也支持向分区表中load数据,只不过需要添加分区列的值

http://www.lryc.cn/news/264106.html

相关文章:

  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
  • 【大数据面试】MapReduce常见问题与答案
  • 数组深入学习感悟
  • 亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程
  • [Java 基础] Java Stream
  • 达芬奇18.6DaVinci ResolveStudio(Win/Mac)激活版
  • 力扣题目学习笔记(OC + Swift)16. 最接近的三数之和
  • 基于STM32的DHT11温湿度传感器与LCD显示器的集成设计
  • 解决浏览器自动将http跳转至https导致无法访问的问题
  • 小程序面试题 | 07.精选小程序面试题
  • 深度学习的推理部分
  • 如何用 CleanMyMac 来保护 Mac 隐私
  • opencv入门到精通——鼠标事件和Trackbar控件的使用
  • iOS 收集 SDK 内部 log
  • 【CSS @property】CSS自定义属性说明与demo
  • 【华为数据之道学习笔记】6-3数据服务分类与建设规范
  • Vue的脚手架
  • Java实现Word中插入上标和下标
  • Java和Python中的目标堆栈规划实现
  • (前端)后管系统登录后隐藏url上信息同时获取url上携带参数~开发需求(bug)总结7
  • CSS3新增样式
  • HP服务器idrac设置以及系统安装
  • rpc和消息队列区别
  • Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  • 虚幻学习笔记18—C++委托(多播)和事件
  • 【UML】第9篇 类图
  • I.MX6ULL启动详解:Boot配置、Bootable image启动头的组成
  • 隐藏通信隧道技术——防御SSH隧道攻击的思路
  • UE-近战战斗系统学习笔记一
  • 使用 Layui 的 template 模块来动态加载select选项