实战

来源:互联网 发布:意志的胜利 知乎 编辑:程序博客网 时间:2024/04/29 08:58

在Hive命令行工具中,可以使用系统环境变量、Hive配置文件中定义的属性以及Hive命令行工具中定义的变量。通过 set 命令,可以访问变量和修改变量的值。不同的变量,存储在不同的命名空间中。通过命名空间可以访问到变量。

  1. 系统环境变量,存储于 evn 命名空间中,该命名空间中的变量是 只读的
  2. Hive配置属性,存储于 hiveconf 命名空间中,该命名空间中的属性是 可读写的
  3. Hive命令行变量,存储于 hivevar 命名空间中,该命名空间中的变量是 可读写的
  4. Java系统属性,存储于 system 命名空间中,该命名空间中的变量是 可读写的

系统环境变量

在Hive命令行工具中访问系统环境变量,只能读取变量,通过 env:变量名 来访问变量,命名空间不能省略:

hive> set env:HOME;env:HOME=/root

Hive 配置属性

在 Hive 命令行工具中,可以新增、修改、读取 Hive 配置属性。 通过 hiveconf:变量名 来定义和访问变量,hivevar 命名空间可以省略:

hive> set hive.cli.print.current.db;    #该配置属性用于显示hive当前所在的数据库。hive.cli.print.current.db=falsehive> set hive.cli.print.current.db=true;hive (default)>     #hive默认的数据库为 default。

Hive 命令行变量

在 Hive 命令行工具中可以新增、修改、读取自定义变量,通过 hivevar:变量名 来定义和访问变量,hivevar 命名空间可以省略:

自定义变量及赋值

hive> set hivevar:testvar;hivevar:testvar=testhive> set testvar;      #忽略 hivevar 命名空间;testvar=test

在 HQL 中使用自定义变量

在 Hive 命令行工具中执行 Hive 的 SQL 语句时,如果 SQL 语句中包含有变量,hive 会先将变量替换成变量值,然后再执行 SQL 语句。

hive> CREATE TABLE test (id int,${testvar} string);  #变量testvar=testOKTime taken: 4.886 secondshive> describe test;        #查看表结构OKid                      int                                         test                    string                                      Time taken: 0.808 seconds, Fetched: 2 row(s)hive> DROP TABLE test;      #删除表Moved: 'hdfs://TesthpCluster/user/hive/warehouse/test' to trash at: hdfs://TesthpCluster/user/root/.Trash/CurrentOKTime taken: 1.436 seconds

Java 系统属性

在 Hive 命令行工具中可以新增、修改、读取 Java 系统属性。通过 system:变量名 来访问变量,命名空间不能省略:

hive (default)> set system:user.name;system:user.name=root