`

Hive变量替换

    博客分类:
  • Hive
阅读更多
Hive的变量前面有一个命名空间,包括三个hiveconf,system,env 和 hivevar
 
1. hiveconf的命名空间指的是hive-site.xml下面的配置变量值。
2. system的命名空间是系统的变量,包括JVM的运行环境。
3. env的命名空间,是指环境变量,包括Shell环境下的变量信息,如HADOOP_HOME之类的
 
普通的变量可以使用
         --define key=value
或者 --hivevar key=value
来声明,这都代表是hivevar,的变量。 这两种方式只能与hive -e  一起使用。
如:
$ hive --define key=value
 
简写 hive -d key=value
$ hive --hivevar key=value
 
添加多个变量的时候如下:
    $ hive --define a='a' --define b='b'
 
 
对于使用hivevar,前缀是可有可无的,如:
    hive> create table toss1(i int, ${hivevar:foo} string);
 
等价于
    hive> create table toss2(i2 int, ${foo} string);
 
但是对于使用命名空间如hiveconf,system,env的,前缀则不可少 
 
在hive下面,可以通过
set;
或者
set -v;
来查看现有环境的所有变量的值。加上 -v参数,可以获取到HDFS和MapReduce的环境变量信息。
 
 
hive -e命令行中支持的变量替换:
1)--define val=value 或者 -d var=value                   //  同--hivevar
2)--hivevar var=value                                                //  使用${hivevar:var}或者${var}替换
3)--hiveconf  var=value                                            //  使用${hiveconf:var}替换
4) 在hive Cli中使用set var=value设置  <==> --hiveconf   //  同--hiveconf
 
举例:
    hive> set CURRENT_DATE='2012-09-16';                 // set var <==> set hiveconf:var
    hive> select * from foo where day >= '${hiveconf:CURRENT_DATE}'
similarly, you could pass on command line:
 
hive -f 命令行支持的变量替换:
执行SQL文件,命令行只支持使用--hiveconf
hive -f xxx.hql(每个--hiveconf只能定义一个变量,定义多个时使用多次--hiveconf)
$ hive --hiveconf CURRENT_DATE='2012-09-16' --hiveconf SINCE_DATE='2012-08-01'  -f test.hql
又或者:
$ hive -hiveconf mapred.job.queue.name=queue2 -e "set mapred.job.queue.name;"
 
但是在hql文件中变量的替换支持
1)set var=value                  //  使用${hiveconf:var}替换
2)set hiveconf var=value         //  使用${hiveconf:var}替换
3)set hivevar var=value           //   使用${hivevar:var}替换,或者 ${var}直接替换
 
 
 
hive与shell的组合:
1、 shell脚本中定义的变量可以直接在hql中引用
例如:
 
#!/bin/bash
tablename="student"
limitcount="8"
 
hive -S -e "use test; select * from ${tablename} limit ${limitcount};"
 
由于hive自身是类SQL语言,缺乏shell的灵活性和对过程的控制能力,所以采用shell+hive的开发模式非常常见,在shell中直接定义变量,在hive -e语句中就可以直接引用
分享到:
评论

相关推荐

    hive客户端安装_hive客户端安装_hive_

    其中,namenode_host:port应替换为你的Hadoop NameNode的地址和端口。 八、测试Hive 创建一个测试数据库和表,然后插入一些数据,验证Hive是否正常工作。例如: ``` CREATE DATABASE testdb; USE testdb; CREATE ...

    hive基础知识总结

    CLI支持多种命令选项,例如`-d`或`--define`用于变量替换、`--database`用于指定数据库、`-e`用于执行单条SQL命令、`-f`用于执行文件中的SQL命令等。此外,还可以通过`-H`或`--help`查看帮助信息,了解可用的命令...

    hive官方文档整理

    3. 变量替换:Hive命令行提供"-d"和"--define"选项,用于在执行查询前定义变量。这些变量可以在查询字符串中被替换使用,从而提供一种灵活的配置方式。 4. Hive配置变量:使用"--hiveconf"选项可以覆盖配置文件中的...

    hive 参数设置

     -hivevar : 用于定义hive运行时的变量替换 ,专门提供给用户自定义变量。  -hiveconf : 用于定义hive执行时的属性,即配置参数,可覆盖hive-site.xml中配置的hive全局变量。 egg: hive -e查询: hive -S -e ...

    hive_windows可执行文件

    - "替换hive安装目录下的bin目录"意味着这些文件是Hive的可执行脚本,用于启动Hive的客户端和服务端进程。用户需要将解压后的文件覆盖到已有的Hive安装目录的bin子目录中,以确保Windows系统能正确执行Hive命令。 ...

    hivesql语句练习

    6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar 启动hive bin/hive ---------------------...

    数据分析系统Hive

    其中 CLI 是最常用的交互方式之一,它支持多种命令选项,例如 `-d` 或 `--define` 用于变量替换,`-e` 用于直接执行 SQL 查询字符串,`-f` 用于从文件中读取 SQL 命令,`-h` 用于连接远程的 Hive Server,等等。...

    idea 集成使用 hive 需要导入的jar包.rar

    请根据实际的Hive服务器配置替换`url`、`user`和`password`。 在运行这段代码之前,确保IDEA已经正确配置了项目的构建路径,将上述提到的jar包都包含进来。在"Build Path"中添加这些库,确保在编译和运行时可以正确...

    java操作Hive源码之HiveJDBC实例(mysql数据库)

    上述代码示例中,`url`变量应替换为实际的Hive服务器地址,`user`和`password`为MySQL中的Hive用户信息。 6. **注意事项**: - 如果Hive使用了Kerberos安全认证,还需要进行Kerberos票据获取和传递,这通常涉及到...

    深入浅出 Hive

    安装 Hive 包括解压软件包、配置环境变量(JAVA_HOME、HIVE_HOME、HADOOP_HOME)以及修改配置文件(如 hive-site.xml)。Hive 的配置文件需要指向 Hadoop 的配置目录,并且可以自定义元数据存储的数据库连接信息。 ...

    hive操作手册

    3. 由于可能存在版本兼容问题,需要将Hive的lib目录下jline-2.12.jar替换掉Hadoop 2.6.4中 yarn/lib目录下的jline-0.94.jar。 4. 修改Hive的配置文件hive-site.xml,在该文件中,需要设置JDBC连接字符串、驱动类名、...

    hive和hadoop

    如果需要将Hive的配置文件独立管理,可以通过设置系统变量`HIVE_CONF_DIR`来实现。这个目录可以包含自定义的配置文件`hive-site.xml`,优先级高于默认的配置文件。该变量可以写在`/etc/profile`或用户的`~/.bashrc`...

    SQuirrel SQL Client配置hive驱动

    在使用SQuirrel SQL Client与Hive交互时,需要注意的一点是,由于Hive是基于Hadoop的,所以你需要确保Hadoop环境的配置正确,包括HADOOP_CONF_DIR环境变量指向了正确的配置文件目录。此外,如果你的Hive部署在远程...

    Hive操作笔记(呕心沥血制作)

    - 设置环境变量后,通过 `hive` 命令启动 Hive CLI。 - 使用 `yarn node –list` 查看 YARN 节点状态。 - Hive 服务端启动 `hiveserver2`,客户端可以使用 beeline 连接。 5. **MySQL 存储元数据** - 安装 ...

    开发hive JDBC

    替换`your_hive_version`为实际使用的Hive版本号。 然后,编写Java代码进行Hive查询。以下是一个简单的示例: ```java package cn.sjzxy.hive; import java.sql.Connection; import java.sql.DriverManager; ...

    win10下搭建Hadoop环境(jdk+mysql+hadoop+scala+hive+spark) 3.docx

    Hadoop 2.8.4的安装包括下载解压、替换`hadooponwindows-master`文件、配置环境变量以及配置Hadoop的配置文件如`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`和`mapred-site.xml`。在这些文件中指定HDFS的名称...

    1_hive函数大全.pdf

    Hive提供了测量字符串长度的length函数、字符串反转的reverse函数、字符串连接concat函数、带分隔符连接concat_ws函数、字符串截取substr和substring函数、转换大小写的upper/ucase和lower/lcase函数、去除或保留...

    hive的安装与配置.md

    为了方便使用Hive命令,需要将Hive的bin目录添加到系统的PATH环境变量中。编辑`~/.bashrc`或`~/.bash_profile`文件,添加以下内容: ```bash export HIVE_HOME=/path/to/apache-hive-x.y.z-bin export PATH=$HIVE_...

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结

    - 替换Hive中的Jar包以确保版本一致。 - 配置Hive连接HBase所需的`hive-hbase-handler-0.13.0.jar`等依赖包。 - 配置Hive与Hadoop之间的连接,确保Hive能够访问HDFS。 综上所述,本文详细介绍了如何安装和整合...

Global site tag (gtag.js) - Google Analytics