Hive在开发时的初衷就是为了以SQL命令来操作数据仓库,所以Hive的相关命令就是类似于SQL的
通过参数执行Hive命令
hive -e "show databases;"
上面的命令等效于在hive命令行输入
show databases;
通过SQL文件执行Hive命令
编写一个show_databases.sql的文件,其中包含SQL命令
使用hIve,添加-f参数执行运行文件命令
hive -f /opt/sql/show_databases.sql
使用beeline命令代替hive命令
与上面的hive命令类似
beeline -u jdbc:hive2://bigdata04:10000 -root -e "show databases;"
beeline -u jdbc:hive2://bigdata04:10000 -root -f /opt/sql/show_databases.sql
通过自定义键值对的方式执行hive命令
在Hive中直接输入命令
select current_databases();
在hive中通过hdfs命令访问文件
dfs -ls /;
在beeline中输入hive命令
与上文的命令一致,但是beeline有着更美观的输出结果
添加hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- jdbc 连接的 URL hostname根据实际进行修改 -->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata04:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password root密码根据实际修改-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root123</value>
</property>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 指定 hiveserver2 连接的 host hive的安装host根据实际进行修改 -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata04</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!-- yarn作业获取到的hiveserver2用户都为hive用户 -->
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<!-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 -->
<property>
<name>hive.server2.active.passive.ha.enable</name>
<value>true</value>
</property>
</configuration>
hive命令行命令
创建数据库
在sql文件中编写表,执行文件
检查表的配置信息
desc formatted test.emp1;
另一种检查表配置信息的命令
show create table test.emp1;
继续编写表,其中包含注释
可以看见,注释因为是中文而被显示为乱码
在navicat中新建查询,执行如下命令修改字符集
重启mysql
已经创建的表不会变动,所以需要删除原有的表重新创建
删除原来的emp2表
drop table test.emp2;
重新创建
修改成功