Hive官方手册翻译(Getting Started)

翻译Hive官方文档系列,文中括号中包含 注: 字样的,为我自行标注的,水平有限,翻译不是完美无缺的。如有疑问,请参照Hive官方文档对照查看。

内容列表
Cloudera制作的Hive介绍视频
安装与配置
系统需求
安装Hive发行版
从Hive源码编译
运行Hive
配置管理概览
运行时配置
Hive, Map-Reduce 与本地模式
错误日志
DDL 操作
元数据存储
DML 操作
SQL 操作
查询示例
SELECTS 和 FILTERS
GROUP BY
JOIN
MULTITABLE INSERT
STREAMING
Simple Example Use Cases
MovieLens User Ratings
Apache Weblog Data
免责声明: Hive目前仅在Unix(linux)和Mac系统下使用Java 1.6测试运行,可以在这些或类似的平台上正常运行。并不支持在Cygwin上工作(注:windows还是别想了)。
绝大部分的测试工作是基于Hadoop 0.20完成的 - 所以,我们建议不要使用其他版本,以避免编译或运行的异常。

Cloudera制作的Hive介绍视频
安装与配置
系统需求
Java 1.6
Hadoop 0.20.x.(注:目前0.9.0支持hadoop 1.0.x)
用发行版安装Hive
使用下载工具从Apache下载镜像下载最近的Hive发行包(查看 Hive发行包)
下一步你需要解压缩Tar包,这将会创建一个名为hive-x.y.z的子目录:
$ tar -xzvf hive-x.y.z.tar.gz
设置HIVE_HOME环境变量指向到Hive的安装目录:
$ cd hive-x.y.z
$ export HIVE_HOME=`pwd`

最后, 将$HIVE_HOME/bin添加到你的PATH环境变量中:
$ export PATH=$HIVE_HOME/bin:$PATH

使用源码创建Hive
Hive SVN 源: http://svn.apache.org/repos/asf/hive/trunk
$ svn co http://svn.apache.org/repos/asf/hive/trunk hive
$ cd hive
$ ant clean package
$ cd build/dist
$ ls
README.txt
bin/ (所有shell脚本)
lib/ (所需的jar文件)
conf/ (配置文件)
examples/ (示例输入与查询文件)

在接下来, 我们会交替的使用build/dist和<install-dir>.
运行Hive
Hive 使用Hadoop,这意味着:
你必须在PATH里面设置了hadoop路径 (注:原文是 you must have hadoop in your path,我认为这个path应该是大写的)  或者
export HADOOP_HOME=<hadoop-install-dir>
作为附加的, 你必须在创建Hive库表前,在HDFS上创建/tmp和/user/hive/warehouse,并且将它们的权限设置为chmod g+w.
完成这个操作的命令如下:
$ $HADOOP_HOME/bin/hadoop fs -mkdir             /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir             /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w     /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w     /user/hive/warehouse

我同样发现设置 HIVE_HOME 是很重要的,但并非必须
$ export HIVE_HOME=<hive-install-dir>

在Shell中使用Hive命令行(cli)模式:
$ $HIVE_HOME/bin/hive

配置文件管理概述
Hive 默认的配置文件保存在 <install-dir>/conf/hive-default.xml
你可以修改其中的配置,并重命名这个文件为 <install-dir>/conf/hive-site.xml(注:我建议你还是保留原始配置文件)
Hive配置文件的位置可以通过设置HIVE_CONF_DIR环境变量来改变.
Log4j的配置保存在 <install-dir>/conf/hive-log4j.properties
Hive的配置存在于Hadoop之上,这意味着Hadoop的配置默认会被继承到Hive中.
Hive 配置可以被如下方式控制:
编辑 hive-site.xml 并定义任何需要的变量 (包括hadoop的变量)
从 cli 模式使用使用set命令 (看下面)
使用如下方式:
$ bin/hive -hiveconf x1=y1 -hiveconf x2=y2
这个例子分别设置了变量x1为y1,x2为y2
设置使用 HIVE_OPTS 环境变量 "-hiveconf x1=y1 -hiveconf x2=y2" 与上面的功能相同
运行时配置
Hive 查询是执行map-reduce查询,并且,这些查询是可以被hadoop的配置所控制的.
命令行命令 'SET' 可以被用来设置任何hadoop(或者hive)的配置变量,例如:
    hive> SET mapred.job.tracker=myhost.mycompany.com:50030;
    hive> SET -v;

后者(注 SET -v)用来查看当前全部的设置. 而不使用 -v 选项,则是用来查看当前与Hadoop不同的配置.
Hive, Map-Reduce 与本地模式
Hive编译器会为绝大多数查询生成map-reduce的jobs。这些Jobs使用下面这个变量来表明被提交到Map-Reduce集群中:
    mapred.job.tracker

由于这通常是在一个多节点的map-reduce集群中被指出,Hadoop同样有个就近的方式来在用户的工作机上运行map-reduce jobs。这就在小数据集的查询上显得非常有用 - 在这种情况下,本地模式运行通常会比将任务提交到整个大集群中查询更快。数据从HDFS上获取是透明的。同样的,由于本地模式仅运行一个reducer,这样,在大数据查询上是非常慢的。
从 0.7 版本开始, Hive全面支持本地运行模式,要使用这个模式,请按照下列进行设置:
    hive> SET mapred.job.tracker=local;

作为附加的,mapred.local.dir应该指定一个合法的本机路径(注:安装hive的那台服务器) (例如: /tmp/<username>/mapred/local). (否则,用户将获取一个定位本地空间的异常抛出).
从0.7版本开始, Hive同样支持自动/非自动地使用本地模式来完成map-reduce jobs,相关的选项是:
    hive> SET hive.exec.mode.local.auto=false;

请注意这个功能默认是关闭的,如果打开 - Hive将分析每一个查询的map-reduce job ,并且如果以下阀值被确认为OK,就尝试运行在本地:
全部job的输入大小低于: hive.exec.mode.local.auto.inputbytes.max (128MB 默认)
全部的map任务数低于: hive.exec.mode.local.auto.tasks.max (4 个默认)
全部reduce任务数等于 1 或者 0.
对于查询大于小数据集,或者需要查询在多个map-reduce jobs中完成,但是子查询很小的(注:小于上述条件),jobs仍可能使用本地模式来运行。
注意,可能不同的hadoop服务器节点和hive客户端的运行时环境(由于不同的jvm版本或者不同的软件库)。运行本地模式可能会导致一个不可被捕获的错误。同样需要注意的是,本地运行模式是在一个独立的子jvm(hive 客户端的子进程)中完成的。 如果用户希望,子jvm所能使用的最大内存数,可以通过访问hive.mapred.local.mem来进行控制。默认设置是0,所以Hive允许Hadoop来决定子jvm的默认内存限制
错误日志
Hive 使用 log4j 来记录日志. 默认来说,日志不会被返回到CLI模式的控制台上(注:也就是CRT中)。默认的日志记录等级是WARN,并被保存到以下文件夹中:
/tmp/<user.name>/hive.log
如果用户愿意 - 日志可以通过修改下面的参数来返回到控制台上:
bin/hive -hiveconf hive.root.logger=INFO,console
另外,用户可以改变记录等级:
bin/hive -hiveconf hive.root.logger=INFO,DRFA
注意,配置项 hive.root.logger 在hive初始化以后,即不能通过使用'set'命令来改变了
Hive同样会为每个hive会话保存查询日志,在/tmp/<user.name>/ (注:本机路径下),但是可以通过修改 hive-site.xml 中的 hive.querylog.location属性来变更。
Hive在一个hadoop集群上运行过程中的日志是由Hadoop的配置所决定的。通常Hadoop会为每个map和reduce任务创建日志文件,并保存在运行任务的集群服务器上。日志文件可以通过Hadoop Jobtracker提供的Web UI上的Task Detail页面来跟踪观察。
运行本地模式时(mapred.job.tracker=local),Hadoop/Hive 将会将执行日志放在本机上,从0.6版本开始 - Hive使用hive-exec-log4j.properties (如果不存在,则是使用hive-log4j.properties文件)来决定默认的日志的保存方式。默认的配置文件将为每个查询执行在本地模式下的日志放到/tmp/<user.name>。这样做的目的是为了将配置单独管理,并可以将日志集中存放到一个用户需要的位置(例如一个NFS文件服务器)上。执行日志对于运行时错误的debug并无帮助。
错误日志对于定位问题非常有用,请将存在的任何bug发送到hive-dev@hadoop.apache.org

DDL 操作
创建Hive表和查看使用
hive> CREATE TABLE pokes (foo INT, bar STRING);

创建一个包含两个字段,名称为pokes的表,第一个字段是int(注:整型),第二个字段是string(注:字符串)
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);

创建一个名为invites的表,其中包含两个字段和一个叫做ds的分区(partition)字段. 分区字段是一个虚拟的字段,本身并不包含在数据中,但是是从加载进来的数据中特别衍生出来的数据集.
默认情况下,表被假定是纯文本的格式,并且使用^A(ctrl-a)来作为数据分割的。
hive> SHOW TABLES;

列出所有的表
hive> SHOW TABLES '.*s';

列出所有结尾包含 's' 的表名。匹配方式使用Java正则表达式,查看下列连接获取关于Java正则的信息  http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html
hive> DESCRIBE invites;

查看invites表的全部字段
可以修改表名,增加删除新的字段等:
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
hive> ALTER TABLE events RENAME TO 3koobecaf;

删除表:
hive> DROP TABLE pokes;

元数据存储
元数据默认使用Derby数据库保存在本地文件系统中,并保存在./metastore_db下。通过修改conf/hive-default.xml中的javax.jdo.option.ConnectionURL变量修改。
当前,在默认配置下,元数据每次只能同时被一个用户所使用。
元数据可以存储在任何一个使用JPOX支持的数据库中,这些关系型数据库的连接和类型可以通过两个变量进行控制。javax.jdo.option.ConnectionURL 和 javax.jdo.option.ConnectionDriverName。
你需要查看数据库的JDO(或JPOX)手册来获取更多信息。
数据库的Schema定义在JDO元数据注释文件package.jdo中,位置在src/contrib/hive/metastore/src/model。
计划在未来,元数据存储引擎可以成为一个独立的服务。
如果你想将元数据作为一个网络的服务来在多个节点中访问,请尝试HiveDerbyServerMode.

DML 操作
将文件中的数据加载到Hive中:
hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;


加载到pokes表的文件包含两个用ctrl-a符号分割的数据列,'LOCAL' 意味着文件是从本地文件系统加载,如果没有 'LOCAL' 则意味着从HDFS中加载。
关键词 'OVERWRITE' 意味着当前表中已经存在的数据将会被删除掉。
如果没有给出 'OVERWRITE',则意味着数据文件将追加到当前的数据集中。
注意:
通过load命令加载的数据不会被校验正确性。
如果文件在HDFS上,他将会被移动到hive所管理的文件系统的命名空间中
Hive目录的根路径是在hive-default.xml文件中的变量
hive.metastore.warehouse.dir
决定的。
我们建议用户在使用Hive建表之前就创建好这个变量指定的目录。
hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds= '2008-08-15');
hive> LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds= '2008-08-08');


上面这两个 LOAD 语句,将加载不同的数据到invites表的分区(partition)中。invites表必须事先使用 ds 创建好partition。
hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds= '2008-08-15');


上述命令是将HDFS上的文件加载到表中。
注意从HDFS中加载数据,将会把数据移动到目录下。这几乎是瞬间完成的。(注:因为只是在HDFS元数据中修改了文件路径的指向。)

SQL 查询
查询示例
下面会演示一些查询范例,在build/dist/examples/queries中可以找到。
更多的,可以在hive源码中的 ql/src/test/queries/positive中可以找到。

SELECTS 和 FILTERS
hive> SELECT a.foo FROM invites a WHERE a.ds= '2008-08-15';

从invite表的字段 'foo' 中选择所有分区ds=2008-08-15的结果。这些结果并不存储在任何地方,只在控制台中显示。
注意:下面的示例中,INSERT (到hive表,本地目录或者HDFS目录) 是可选命令。
    hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds= '2008-08-15';


从invites表中选择分区 ds=2008-08-15 的所有行,并放入HDFS目录中。结果数据在在/tmp/hdfs_out目录中的文件(多个文件,文件数量取决于mapper的数量)。

存在分区的表在使用 WHERE 条件过滤的时候必须至少指定一个分区来查询。
hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;


选择pokes表中所有的数据并放到一个本地(注:当前服务器)的文件路径中。
hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;
hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a WHERE a. key < 100;
hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a;
hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_4' select a.invites, a.pokes FROM profiles a;
hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT COUNT(*) FROM invites a WHERE a.ds= '2008-08-15';
hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT a.foo, a.bar FROM invites a;
hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sum' SELECT SUM(a.pc) FROM pc1 a;


字段计算和,最大值,最小值同样可以使用,注意不包含在 HIVE-287 中的Hive版本,你需要使用COUNT(1) 来代替 COUNT(*)
GROUP BY
hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(*) WHERE a.foo > 0 GROUP BY a.bar;
hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(*) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;


注意不包含在 HIVE-287 中的Hive版本,你需要使用COUNT(1) 来代替 COUNT(*)
JOIN
hive> FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;


MULTITABLE INSERT(多重插入)
    FROM src
    INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100
    INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200
    INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300
    INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;
STREAMING
    hive> FROM invites a INSERT OVERWRITE TABLE events SELECT TRANSFORM(a.foo, a.bar) AS (oof, rab) USING '/bin/cat' WHERE a.ds > '2008-08-09';

在map中使用脚本/bin/cat对数据的流式访问(就像使用hadoop的streaming)
同样的 - 流式访问也可以使用在reduce阶段。(请查看 Hive Tutorial 范例)

简单的使用范例
用户对电影的投票统计
首先,创建一个使用tab分割的文本文件的表
CREATE TABLE u_data (
        userid INT,
        movieid INT,
        rating INT,
        unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;


然后,下载这个数据文件
wget http://www.grouplens.org/system/files/ml-data.tar+0.gz
tar xvzf ml-data.tar+0.gz
将这个文件加载到刚刚创建的表中:
LOAD DATA LOCAL INPATH 'ml-data/u.data' OVERWRITE INTO TABLE u_data;


计算表 u_data 中的总行数:
SELECT COUNT(*) FROM u_data;

注意不包含在 HIVE-287 中的Hive版本,你需要使用COUNT(1) 来代替 COUNT(*)
现在,我们可以在表 u_data 中做一些复杂的数据分析
创建 weekday_mapper.py:
import sys
import datetime
for line in sys.stdin:
    line = line.strip()
    userid, movieid, rating, unixtime = line.split('\t')
    weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
    print '\t'.join([userid, movieid, rating, str(weekday)])

使用mapper脚本:
CREATE TABLE u_data_new (
        userid INT,
        movieid INT,
        rating INT,
        weekday INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
add FILE weekday_mapper.py;
INSERT OVERWRITE TABLE u_data_new
SELECT
        TRANSFORM (userid, movieid, rating, unixtime)
        USING 'python weekday_mapper.py'
         AS (userid, movieid, rating, weekday)
FROM u_data;
SELECT weekday, COUNT(*)
FROM u_data_new
GROUP BY weekday;
注意 0.5.0 及更早的的Hive版本,你需要使用COUNT(1) 来代替 COUNT(*)
Apache Web日志数据
Apache日志格式是可以自定义的,作为大多数网管来说都是使用默认设置。
我们可以给默认的Apache日志创建一个如下的表
更多的关于正则序列化/反序列化(注: 原文!RegexSerDe) 可以在这里看到。
http://issues.apache.org/jira/browse/HIVE-662
add jar ../build/contrib/hive_contrib.jar;
CREATE TABLE apachelog (
        host STRING,
        identity STRING,
         user STRING,
        time STRING,
        request STRING,
        status STRING,
         size STRING,
        referer STRING,
        agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
        "input.regex" = "([^]*) ([^]*) ([^]*) (-|\\[^\\]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\".*\") ([^ \"]*|\".*\"))?",
        "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数 据提取转化加载 (ETL),这是一种可以存储、 查询和分析存储在 Hadoop 中的大规模数据的 机制。 Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。 同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理 内建的 mapper 和 reducer 无法完成的复杂的分析工作。 1.1HIVE 架构 Hive 的结构可以分为以下几部分: 用户接口:包括 CLI, Client, WUI 元数据存储。通常是存储在关系数据库如 mysql, derby 中 6 解释器、编译器、优化器、执行器 Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算 1、 用户接口主要有三个: CLI,Client 和 WUI。其中最常用的是 CLI , Cli 启动的时候, 会同时启动一个 Hive 副本。 Client 是 Hive 的客户端,用户连接至 Hive Server 。 在启动 Client 模式的时候, 需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server 。 WUI 是通过浏览器访问 Hive 。 2、 Hive 将元数据存储在数据库中,如 mysql 、 derby 。 Hive 中的元数据包括表的名字, 表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 3、 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及 查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 4、 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比 如 select * from tbl 不会生成 MapRedcue 任务)。 1.2Hive 和 Hadoop 关系 Hive 构建在 Hadoop 之上, HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的 所有的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任 务,如: select * from table ) Hadoop和 Hive 都是用 UTF-8 编码的 7 1.3Hive 和普通关系数据库的异同 Hive RDBMS 查询语言 HQL SQL 数据存储 HDFS Raw Device or Local FS 索引 无 有 执行 MapReduce Excutor 执行延迟 高 低 处理数据规模 大 小 1. 查询语言。由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计 了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开 发。 2. 数据存储位置。 Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中 的。而数据库则可以将数据保存在块设备或者本地文件系统中。 3. 数据格式。 Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数 据格式需要指定三个属性:列分隔符(通常为空格、” t ”、” x001″)、行分隔符 (” n”)以及读取文件数据的方法( Hive 中默认有三个文件格式 TextFile , SequenceFile 以及 RCFile )。由于在加载数据的过程中,不需要从用户数据格式到 Hive 定义的数据格式的转换,因此, Hive 在加载的过程中不会对数据本身进行任何修 改,而只是将数据内容复制或者移动到相应的 HDFS 目录中。而在数据库中,不同的数 据库有不同的存储引擎,定义了自己的数据格式。所有数据都会按照一定的组织存储, 因此,数据库加载数据的过程会比较耗时。 4. 数据更新。由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。 因此, Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO ... VALUES 添加数据,使用 UPDATE ... SET 修改数据。 5. 索引。之前已经说过, Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会 对数据进行扫描,因此也没有对数据中的某些 Key 建立索引。 Hive 要访问数据中满足 条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引 入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问, Hive 仍然 可以体现出优势。数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特 定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较 高,决定了 Hive 不适合在线数据查询。 6. 执行。 Hive 中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的(类似 select * from tbl 的查询不需要 MapReduce)。而数据库通常有自己的执行引擎。
一、关系运算: 4 1. 等值比较: = 4 2. 不等值比较: 4 3. 小于比较: < 4 4. 小于等于比较: 5 6. 大于等于比较: >= 5 7. 空值判断: IS NULL 5 8. 非空判断: IS NOT NULL 6 9. LIKE比较: LIKE 6 10. JAVA的LIKE操作: RLIKE 6 11. REGEXP操作: REGEXP 7 二、数学运算: 7 1. 加法操作: + 7 2. 减法操作: - 7 3. 乘法操作: * 8 4. 除法操作: / 8 5. 取余操作: % 8 6. 位与操作: & 9 7. 位或操作: | 9 8. 位异或操作: ^ 9 9.位取反操作: ~ 10 三、逻辑运算: 10 1. 逻辑与操作: AND 10 2. 逻辑或操作: OR 10 3. 逻辑非操作: NOT 10 四、数值计算 11 1. 取整函数: round 11 2. 指定精度取整函数: round 11 3. 向下取整函数: floor 11 4. 向上取整函数: ceil 12 5. 向上取整函数: ceiling 12 6. 取随机数函数: rand 12 7. 自然指数函数: exp 13 8. 以10为底对数函数: log10 13 9. 以2为底对数函数: log2 13 10. 对数函数: log 13 11. 幂运算函数: pow 14 12. 幂运算函数: power 14 13. 开平方函数: sqrt 14 14. 二进制函数: bin 14 15. 十六进制函数: hex 15 16. 反转十六进制函数: unhex 15 17. 进制转换函数: conv 15 18. 绝对值函数: abs 16 19. 正取余函数: pmod 16 20. 正弦函数: sin 16 21. 反正弦函数: asin 16 22. 余弦函数: cos 17 23. 反余弦函数: acos 17 24. positive函数: positive 17 25. negative函数: negative 17 五、日期函数 18 1. UNIX时间戳转日期函数: from_unixtime 18 2. 获取当前UNIX时间戳函数: unix_timestamp 18 3. 日期转UNIX时间戳函数: unix_timestamp 18 4. 指定格式日期转UNIX时间戳函数: unix_timestamp 18 5. 日期时间转日期函数: to_date 19 6. 日期转年函数: year 19 7. 日期转月函数: month 19 8. 日期转天函数: day 19 9. 日期转小时函数: hour 20 10. 日期转分钟函数: minute 20 11. 日期转秒函数: second 20 12. 日期转周函数: weekofyear 20 13. 日期比较函数: datediff 21 14. 日期增加函数: date_add 21 15. 日期减少函数: date_sub 21 六、条件函数 21 1. If函数: if 21 2. 非空查找函数: COALESCE 22 3. 条件判断函数:CASE 22 4. 条件判断函数:CASE 22 七、字符串函数 23 1. 字符串长度函数:length 23 2. 字符串反转函数:reverse 23 3. 字符串连接函数:concat 23 4. 带分隔符字符串连接函数:concat_ws 23 5. 字符串截取函数:substr,substring 24 6. 字符串截取函数:substr,substring 24 7. 字符串转大写函数:upper,ucase 24 8. 字符串转小写函数:lower,lcase 25 9. 去空格函数:trim 25 10. 左边去空格函数:ltrim 25 11. 右边去空格函数:rtrim 25 12. 正则表达式替换函数:regexp_replace 26 13. 正则表达式解析函数:regexp_extract 26 14. URL解析函数:parse_url 26 15. json解析函数:get_json_object 27 16. 空格字符串函数:space 27 17. 重复字符串函数:repeat 27 18. 首字符ascii函数:ascii 28 19. 左补足函数:lpad 28 20. 右补足函数:rpad 28 21. 分割字符串函数: split 28 22. 集合查找函数: find_in_set 29 八、集合统计函数 29 1. 个数统计函数: count 29 2. 总和统计函数: sum 29 3. 平均值统计函数: avg 30 4. 最小值统计函数: min 30 5. 最大值统计函数: max 30 6. 非空集合总体变量函数: var_pop 30 7. 非空集合样本变量函数: var_samp 31 8. 总体标准偏离函数: stddev_pop 31 9. 样本标准偏离函数: stddev_samp 31 10.中位数函数: percentile 31 11. 中位数函数: percentile 31 12. 近似中位数函数: percentile_approx 32 13. 近似中位数函数: percentile_approx 32 14. 直方图: histogram_numeric 32 九、复合类型构建操作 32 1. Map类型构建: map 32 2. Struct类型构建: struct 33 3. array类型构建: array 33 十、复杂类型访问操作 33 1. array类型访问: A[n] 33 2. map类型访问: M[key] 34 3. struct类型访问: S.x 34 十一、复杂类型长度统计函数 34 1. Map类型长度函数: size(Map) 34 2. array类型长度函数: size(Array) 34 3. 类型转换函数 35
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值