Hive3:hive使用

Hive3:hive使用

SQL使用

# 启动 root@redis01:/usr/local/hive/bin# ./hive # 退出 hive> quit; # 创建数据库 hive> create database db_test; OK Time taken: 0.19 seconds # 切换单钱数据库 hive> use db_test; OK Time taken: 0.044 seconds # 创建表 hive> create table testA( > name string, > age int); OK Time taken: 0.612 seconds # 插入数据(这里会报错,设置本地模式hive> set hive.exec.mode.local.auto=true;) hive> Insert into table testA values > ("james",23); # 查询数据 hive> select * from testA; OK james 23 Time taken: 0.216 seconds, Fetched: 1 row(s)
 
 

删除数据库

删除数据库的时候,不允许删除有数据的数据库,如果数据库里面有数据则会报错。如果要忽略这些内容,则在后面增加CASCADE关键字,则忽略报错,删除数据库。
hive> DROP DATABASE DbName CASCADE(可选); hive> DROP DATABASE IF EXISTS DbName CASCADE;
 

报错

插入数据报错

执行插入语句报错
notion image
解决方法
# set hive.exec.mode.local.auto=true; 使用本地模式,默认是false hive> set hive.exec.mode.local.auto=true;
notion image
大多数的Hadoop job是需要hadoop提供的完整的可扩展性来处理大数据的。不过,有时hive的输入数据量是非常小的。在这种情况下,为查询出发执行任务的时间消耗可能会比实际job的执行时间要多的多。对于大多数这种情况,hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间会明显被缩短。
  • 当一个job满足如下条件才能真正使用本地模式:
      1. job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
      1. job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4)
      1. job的reduce数必须为0或者1