Hive命令及SQL源码编译流程

1. 命令

# 表

	# 创建
		CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
		[ (col_name  data_type [COMMENT col_comment], ...) ]
		[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_buckers BUCKETS]
		[ROW FORMAT row_format]
		[STORED AS file_format]
				[FIELDS TERMINATED BY] --设置字段与字段之间的分隔符
				[COLLECTION ITEMS TERMINATED BY] --设置一个复杂类型(array,struct)字段的各个item之间的分隔符
				[MAP KEYS TERMINATED BY] -- 设置一个复杂类型(Map)字段的key value之间的分隔符
				[LINES TERMINATED BY] -- 设置行与行之间的分隔符
		[LOCATION hdfs_path]

 	 # 查
		# 查看指定库内的所有表
			show tables in database_name;
		# 描述表的字段信息
			describe employee;
		# 显示所创建表的扩展信息
			describe extended employee;
		# 最全面的信息查看方式,能够显示出最多的信息
			describe formatted employee;
		# 查看表创建脚本
			show create table employee ;
		# 展示分区
			show partitions employee;
	

	# 改
		# 更改表名称
			alter table employee  to employee1;
		# 新增字段
			alter table employee  add columns(user_id string);
		# 修改注释
			alter table employee change column user_id  users_id string COMMENT'用户id';

	# 删
		# 删除库
		drop database if exists db_name;
		# 删除表
		drop table if exists employee;
		# 清空表
		truncate table employee;
		insert overwrite table employee select * from employee where 1=0;
		# 删除分区
		alter table employee_table drop partition (pt>='2022-01-01')		


# 加载数据
	load data local inpath '/data/hive_temp_data/tmp_20200722_reply.TXT' into table default.tmp_20200722_reply
	

# 日期
	# 函数
		# 后n天 n可为负数
		date_add(date,n)
    	# 前n天 n可为负数 
		date_sub(date,n)

		# 后n月 n可为负数
		add_months(date,m)
		
		# 日期差,前面减后面
		datediff(date,date1)

	  # 常用
		# 指定格式的转换
			from_unixtime(unix_timestamp('20211201','yyyymmdd'),'yyyy-mm-dd')
		# 当前日期	
			current_date()
	  	# 当前周
			weekofyear(current_date())
		# 月初
			trunc(current_date(),'MM')
		# 月末
			last_day(current_date())
	  	# 年初
			trunc(current_date(),'YY')

2.HQL源码流程图

在这里插入图片描述

3.Hive SQL的编译过程详解

参考美团技术团队文章: Hive SQL的编译过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值