美文网首页大数据Hive在简书
hive学习(二)DML语句

hive学习(二)DML语句

作者: 大数据阶梯之路 | 来源:发表于2019-07-11 17:20 被阅读7次

    一、DDL语句

    这篇文章DDL语句讲得很全,(文章链接:https://www.cnblogs.com/qingyunzong/p/8723271.html
    SQL中的if表达式用法和流程控制用法:https://www.cnblogs.com/xuhaojun/p/9141396.html

    二、DML语句

    • 1、load data [local] inpath '文件路径' [overwrite] into table 表名 用来向hive装载数据,不过注意这操作不是把数据复制到表中,而是把文件和表建立起关联,当访问表的时候就去查询hdfs的数据。
      参数说明:如果加上local则支持用户从其本地文件装载数据(eg:file:///user/hive/example),如果没有local则从Hadoop配置变量fs.default.name中设定的路径加载文件(eg:hdfs://namenode:9000/user/hive/example)。如果有overwrite的话就把数据装载到一个早已建好的表中并且替换原来的数据。
    • 2、insert into table 表名 values(row_values1),(row_values2); 用来插入表数据,支持多行插入。
      insert overwrite table 表名 partition(分区字段=’分区值') select子句; 用来把查询的数据插入到目标表中。具体参考这篇文章:https://blog.csdn.net/babydavic/article/details/26357017
    • 3、update 表名 set 列名=值 where 条件 更新表数据
    • 4、delete 表名 where 条件 删除表数据
    • 5、select 列名 from 表名1 join 表名2 on (表1唯一字段=表2唯一字段) 等值连接
      select 列名 from 表名1 left join 表名2 on (表1唯一字段=表2唯一字段) 左外连接 (左表有的都要出现)
      select 列名 from 表名1 right join 表名2 on (表1唯一字段=表2唯一字段) 右外连接
      select 列名 from 表名1 full outer join 表名2 on (表1唯一字段=表2唯一字段) 全外连接 (左右表有的都要出现)
      select 列名 from 表名1 left semi join 表名2 on (表1唯一字段=表2唯一字段) 左半连接(右边的表只能在on子句中设置过滤条件,where不能设置过滤条件,最终select结果只允许出现左表,右表的数据被过滤掉了,左表的记录在右表中一旦找到对应的记录,右侧表既停止扫描 ,所以性能会高些),PS:没有右半连接。

    三、窗口函数

    和SQL一样有sum()、count()、max()、min()、avg()等聚合函数,还有
    ntile(参数):指的是根据传入的参数划分为几份,并返回每一份的序号。
    row_number():指的是生成一列连续的序号,从1开始。
    rank():指的是生成一列连续的序号,但和row_number()区别的是相同的值这一项都为相同的序号,下一个序号就跳过。
    dense_rank():与rank()相反,下一个序号不跳过。
    lag(参数1,参数2,参数3):第一个参数是排序列名,第二个参数是往后移动的开始行,第三个是没有数据时的默认值。
    lead(参数1,参数2,参数3):这和lag()函数是相反的,区别是它往前移动。
    first_value(参数):,参数是该列,对该列到目前为止的第一个值。
    last_value(参数):参数是该列,对该列到目前为止的最后一个值。
    以上窗口函数总结主要参考这篇文章:https://www.jianshu.com/p/9fda829b1ef1,看例子的话这篇文章里有,我就不重复做同样的事情了。

    相关文章

      网友评论

        本文标题:hive学习(二)DML语句

        本文链接:https://www.haomeiwen.com/subject/ldvfhctx.html