目录:

  • Loading files into tables
  • Inserting data into Hive Tables from queries
  • Writing data into the filesystem from queries
  • Inserting values into tables from SQL
  • Delete
  • 应用Demo

 Loading files into tables:


  • 语法:LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
  • 示例代码如下:
    #创建表
    CREATE TABLE web_log(viewTime INT, userid BIGINT, url STRING, referrer STRING, ip STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; #导入文件数据
    LOAD DATA LOCAL INPATH '/usr/zhu/table.txt' OVERWRITE INTO TABLE web_log;
  • OVERWRITE:
  1. 目标表(或者分区)中的内容(如果有)会被删除,然后再将 filepath 指向的文件/目录中的内容添加到表/分区中
  2. 如果目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代

Inserting data into Hive Tables from queries:


  • 语法:INSERT OVERWRITE TABLE tablename1 [PARTITION] select_statement1 FROM from_statement;
             INSERT INTO TABLE tablename1 [PARTITION] select_statement1 FROM from_statement;
  • 示例代码:
    #创建结构相同的表
    create table empDemo as employee; #插入数据
    insert into table empDemo select * from employee; #覆盖插入数据
    insert overwrite table empDemo select * from employee;

Writing data into the filesystem from queries:


  • 语法:INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ...
  • 示例代码:
    INSERT OVERWRITE LOCAL DIRECTORY './tmp/zhu'  SELECT * FROM employee;

Inserting values into tables from SQL:


  • 语法:INSERT INTO TABLE tablename VALUES values_row [, values_row ...]

示例代码:

#单行插入
insert into table employee values('','','tgzhu'); #多行插入
insert into table employee values('','','WangWu'),('','','ZhaoZhao');

Delete:


  • 语法:DELETE FROM tablename [WHERE expression]

应用Demo:


  • 以一个实际的应用Demo对Hive 的 DDL、DML 进行说明,过程如下
  • 创建与HBase关联的外部表,HQL如下:
    CREATE EXTERNAL TABLE if not exists Hive_CM_EvcRealTimeData(
    Rowkey string,
    RealTimeData_CarNo string,
    RealTimeData_Time string,
    RealTimeData_Speed decimal(20,8),
    RealTimeData_Mileage decimal(20,8),
    RealTimeData_HighestVoltageBatteryOrd int,
    RealTimeData_Latitude decimal(20,8),
    RealTimeData_Longitude decimal(20,8)
    )
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES('hbase.columns.mapping' = ':key,d:RealTimeData_CarNo, ata_Time,d:RealTimeData_Speed,d:RealTimeData_Mileage,d:RealTimeData_HighestVoltageBatteryOrd,d:RealTimeData_Latitude,d:RealTimeData_Longitude')
    TBLPROPERTIES('hbase.table.name' = 'CM_EvcRealTimeData')
  • 创建一个用来保存计算结果的hive实表,如下:
CREATE TABLE if not exists Hive_CM_CarDailyRpt(
CarNo string,
DTime string,
OnLineCount int,
RunCount int,
Mileage decimal(20,8),
MaxSpeed decimal(20,8),
totalPower decimal(20,8),
AverageSpeed decimal(20,8),
CDI_BatteryFlag string,
CDI_CoordinatorFlag string
)
STORED AS TEXTFILE
  • 计算并将结果插入实表,如下:
set hive.execution.engine = tez;

Insert overwrite table Hive_CM_CarDailyRpt
select
CarNo,DTime,
CONVERT(int,SUM(CT)) as OnLineCount ,
CONVERT(int,SUM(CTSPEED)) as RunCount,
CONVERT(decimal(18,2),MAX(MILE)-MIN(MILE)) as Mileage ,
CONVERT(decimal(18,2),MAX(SPEED)) as MaxSpeed,
((MAX(MILE)-MIN(MILE))*0.2) as totalPower,
case when SUM(CTSPEED)>0 then CONVERT(decimal(18,2),((MAX(MILE)-MIN(MILE))/SUM(CTSPEED)))
else 0 end as AverageSpeed,
case when SUM(RealTimeData_HighestVoltageBatteryOrd)>0 then '' else '' end as BatteryFlag,
case when (SUM(RealTimeData_Latitude) + SUM(RealTimeData_Longitude)) >0 then '' else '' end as LatitudeFlag,
from
(
SELECT REALTIMEDATA_CARNO AS CARNO,
substring(RealTimeData_Time,1,8) as DTime,
1 AS CT,
CASE WHEN REALTIMEDATA_SPEED>0 THEN 1 ELSE 0 END AS CTSPEED,
CASE WHEN REALTIMEDATA_MILEAGE=0 THEN NULL ELSE REALTIMEDATA_MILEAGE END AS MILE,
CASE WHEN REALTIMEDATA_SPEED>200 then 0 else REALTIMEDATA_SPEED end AS SPEED,
RealTimeData_HighestVoltageBatteryOrd,
RealTimeData_Latitude,RealTimeData_Longitude
FROM CM_EvcRealTimeData
) t
group by CarNo,DTime
  • 再将计算结果转存关系型数据库或HBase

Hive(七):HQL DML的更多相关文章

  1. Hive的HQL(2)

    Hive基础(1) Hive的HQL(2) 1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准.但是和SQL的差异为:不支持行级别的操作,不支持事务等.HQL的语法接近于My ...

  2. Hive DDL、DML操作

    • 一.DDL操作(数据定义语言)包括:Create.Alter.Show.Drop等. • create database- 创建新数据库 • alter database - 修改数据库 • dr ...

  3. Hive(六):HQL DDL

    HQL语法基于 SqlLine(http://sqlline.sourceforge.net/),DDL主要包含数据库.函数.视图的创建.修改.删除,参考资料:(https://cwiki.apach ...

  4. Hive的HQL语句及数据倾斜解决方案

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005 作者: 朱培          ID ...

  5. Apache Hive 执行HQL语句报错 ( 10G )

    # 故障描述: hive > , ) as uuid, count(distinct(request_body["uuid"])) as count from log_bft ...

  6. Hive之 Hql语法解析

    Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

  7. hive 标准hql建表语法格式

    一.标准hql建表语法格式1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性) 具体参考官网界面:HIVE官网建表说明文档 CREATE [EXTERNAL] TABLE [IF NO ...

  8. Hive DDL及DML操作

    一.修改表 增加/删除分区 语法结构 ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ...

  9. 将hive的hql执行结果保存到变量中

    这里分别针对shell脚本和python脚本举例: shell脚本如下: 注意:在hive语句左右两边使用的是ESC键下面的点号,不是单引号. #!/usr/bin/env bash test1=`h ...

随机推荐

  1. Smart210学习记录-----linux定时器

    1.内核定时器: Linux 内核所提供的用于操作定时器的数据结构和函数如下: (1) timer_list 在 Linux 内核中,timer_list 结构体的一个实例对应一个定时器 1 stru ...

  2. Nginx工作原理和优化

    转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...

  3. editplus查找替换的正则表达式应用

    表达式        说明\t        制表符.\n        新行..        匹配任意字符.|        匹配表达式左边和右边的字符. 例如, "ab|bc" ...

  4. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed ...

  5. iOS学习笔记---oc语言第十天

    内存管理高级 一 属性的内部实现原理   assign   retain    copy assign 下的属性内部实现 setter方法 @property(nonatomic,assign)NSS ...

  6. [转载]新手入门:Spring的一些学习方法及意见

    原文地址:新手入门:Spring的一些学习方法及意见作者:飞扬飞扬xyz Spring简介: 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您 ...

  7. spingmvc 返回json数据日期格式化方法

    第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxm ...

  8. python--切片--6

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一.对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: &g ...

  9. P168 实战练习(构造方法)

    尝试编写一个矩形类,将长宽做为矩形类的属性,在构造方法中将长宽初始化,定义一个成员方法求此矩形的面积. 编写代码如下: 创建Rectangular类,则相关代码为: package org.hanqi ...

  10. Hibernate之:各种主键生成策略与配置详解

    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...