大数据之hiveSQL
最近增加了学习java基础算法,包括几种排序算法,二叉树(前序,后序,中序),队列和栈,bmp搜索,广义搜索算法,迭代等等一些技巧(自己动手绝对比单纯的理论要强的多,多练练)
HIVE是hadoop生态圈的重要一环,降低了hadoop的开发难度,将复杂冗余的代码综合成一个个简单的SQL语句。但是,很明显不如传统的MapReduce灵活,但是提高了项目的开发效率,学习成本低。
主要通过学习视频加上各种博客和其它资料,学习基础的入门SQL语句可以从菜鸟教程上面,hive语法的我主要看的是--> https://www.cnblogs.com/HondaHsu/p/4346354.html
HiveSQL主要分为DDL 和DML
DDL
1.创建表
create [local] table table_name (column_name column_type [commet '描述'],...)
partitioned by (column_name,...)
clustred by (column_name,..)
order by(column_name) // 注意与sort by 的区别 前者是全局 后者是当前主机
row format delimited
field terminated by char;
stored as ...
localtion hdfs_path
复制一个表结构
create table table_name like like_table_name;
2.修改表
alter table table_name/column_name rename to new_table_name/column_new_name; //修改表名
alter table table_name change [column] column_name column_new_name column_new_name_type [commet] //修改列名
alter table table_name drop cloumn_name/partition_sec;
alter table table_name add column(column_name column_type)
alter table table_name set fileformat new_format;
3删除表,分区
drop table table_name;
alter table table_name drop partition_sec;
4创建数据库
create database database_name;
show databases;
DML
hive 没有insert into 不支持一条一条的插入,可以使用insert overwrite , load data [local]
insert overwrite table table_name
select * from other_table;
local data [local] path 'url' into table table_name [partition]
hive 不支持等值连接 类似
select * from table1 a and table b where a.cloumn = b.column;
可以使用 left semi join 代替
insert overwrite 可以直接导出去
insert overwrite [LOCAL] directory ' ' select * from table;
另外hive中 join只支持等值查询
select a.column b.column from table_name1 a join table_name2 b on a.column = b.column;
DQL
select [column_name1,..] from table_name
[where where_condition] /[join .. on .. ]
[group by]
[order by]/[sort by]
[partition]
[limit num]
可能有些地方有些问题,还有很多需要补充。