Hive数据库操作:创建、显示与删除

需积分: 27 18 下载量 162 浏览量 更新于2024-09-07 1 收藏 12KB TXT 举报
"Hive SQL语句查询,包括数据库操作与分区表" 在Hive SQL中,数据库的操作是管理和组织数据的基础。默认情况下,Hive配置中包含一个名为`default`的数据库,它是所有Hive操作的起点。创建新数据库的语句如下: ```sql create database [if not exists] <database name>; ``` `if not exists`选项可防止在数据库已存在时出现错误。例如,创建一个名为`mydb`的新数据库: ```sql create database if not exists mydb; ``` 要查看当前系统中存在的所有数据库,可以使用`show databases`命令: ```sql show databases; ``` 删除数据库是一个需要谨慎操作的过程,因为默认情况下,Hive不允许直接删除包含表的数据库。你需要先删除或移动数据库内的所有表。不过,通过添加`cascade`关键字,你可以强制删除数据库及其所有依赖,包括表: ```sql drop database if exists <database name> cascade; ``` 如示例所示,删除名为`users`的数据库并连同其所有内容一起移除: ```sql hive> drop database if exists users cascade; ``` 切换到特定数据库,使用`use`命令: ```sql use <database name>; ``` 这将使后续的所有表操作都在指定的数据库内进行。 接下来,我们讨论分区表。分区是Hive处理大数据的一种策略,它将大表逻辑上划分为更小、更易管理的部分。这有助于优化查询性能,因为你可以针对特定分区进行操作,而不是遍历整个表。 单分区表的创建如下: ```sql create table day_table (id int, content string) partitioned by (dt string); ``` 这个例子中,`day_table`按照日期`dt`进行分区,使得数据按日期组织。 双分区表则可以进一步细分,例如按日期和小时分区: ```sql create table day_hour_table (id int, content string) partitioned by (dt string, hour string); ``` 这里的`day_hour_table`同时按日期`dt`和小时`hour`分区,提供更高的查询粒度。 将数据加载到分区表中,可以使用`LOAD DATA`命令: ```sql LOAD DATA local INPATH '/root/hivedata/dat_table.txt' INTO TABLE day_table partition(dt='2017-07-07'); ``` 这条语句将本地路径`/root/hivedata/dat_table.txt`的数据加载到`day_table`的`dt=2017-07-07`分区。 通过分区,用户可以在查询时指定特定的分区,从而大大提高查询效率,特别是当处理大量历史数据时。例如,只查询2017年7月7日的数据,而不需要扫描整个表。 总结来说,Hive SQL提供了丰富的数据库管理和分区表操作,这对于大数据环境下的数据存储和查询至关重要。通过合理使用这些功能,可以有效地管理大规模数据,并优化查询性能。
2018-12-06 上传
1.上传tar包 2.解压 tar -zxvf hive-1.2.1.tar.gz 3.安装mysql数据库 推荐yum 在线安装 4.配置hive (a)配置HIVE_HOME环境变量 vi conf/hive-env.sh 配置其中的$hadoop_home (b)配置元数据库信息 vi hive-site.xml 添加如下内容: javax.jdo.option.ConnectionURL jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true JDBC connect string for a JDBC metastore javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver Driver class name for a JDBC metastore javax.jdo.option.ConnectionUserName root username to use against metastore database javax.jdo.option.ConnectionPassword hadoop password to use against metastore database 5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下 如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行) mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES; 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几种使用方式: 1.Hive交互shell bin/hive 2.Hive JDBC服务(参考java jdbc连接mysql) 3.hive启动为一个服务器,来对外提供服务 bin/hiveserver2 nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err & 启动成功后,可以在别的节点上用beeline去连接 bin/beeline -u jdbc:hive2://mini1:10000 -n root 或者 bin/beeline ! connect jdbc:hive2://mini1:10000 4.Hive命令 hive -e ‘sql’ bin/hive -e 'select * from t_test'