1. 安装hive
1.1 安装 java
在Hive安装之前,Java必须在系统上已经安装。使用下面的命令来验证是否已经安装Java, 如果Java已经安装在系统上,就可以看到如下回应
在 java 官网 下载,傻瓜式安装即可
1.2 hadoop 安装
下载 hadoop
解压放到指定目录下,并进行如下配置环境变量(mac系统)
- 执行
vim ~/.bash_profile
修改环境变量(linux 下应该是 ~/.bashrc)
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export
PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source ~/.bash_profile
将当前修改应用到正在运行的系统
使用如下命令进行验证
hadoop 配置
进入hadoop配置文件目录 $HADOOP_HOME/etc/hadoop
-
为了使用java开发Hadoop的项目,必须用java在系统的位置替换JAVA_HOME值重置hadoop-env.sh文件中的java环境变量
先用
/usr/libexec/java_home -V
查看java安装路径
修改hadoop-env.sh
文件
-
修改 core-site.xml 文件,core-site.xml文件中包含如下信息,如使用Hadoop实例分配给文件系统的存储器,用于存储数据的内存限制的端口号,以及读/写缓冲器的大小
打开core-site.xml文件并在,标签之间添加以下属性
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
-
修改 hdfs-site.xml 文件,hdfs-site.xml 文件中包含如下信息,如复制数据的值,名称节点的路径,本地文件系统的数据节点的路径
更多配置参考:hive 安装
验证hadoop的安装
-
验证hadoop dfs
start-dfs.sh
踩坑记录:connection refused 错误
参考 1. Mac OS X 上搭建 Hadoop 开发环境指南
2. Permission denied (publickey,password,keyboard-interactive). -
验证yarn脚本
start-yarn.sh
-
访问Hadoop的默认端口号为50070(hadoop 3 默认端口为9870)使用以下网址,以获取浏览器Hadoop服务
http://localhost:9870/
1.3 hive安装
下载hive
下载 hive 2.3.9,如下图所示
配置hive环境变量
通过 vim ~/.bash_profile
,追加如下语句
export HIVE_HOME=/Applications/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:/Applications/hadoop-3.3.1/lib/*:.
export CLASSPATH=$CLASSPATH:/Applications/apache-hive-2.3.9-bin/lib/*:.
执行 source ~/.bash_profile
使其生效
配置hive
cd $HIVE_HOME/conf
cp hive-env.sh.template hive-env.sh
编辑hive-env.sh文件添加以下行
export HADOOP_HOME=/Applications/hadoop-3.3.1
1.4 下载并安装Apache Derby
如上Hive安装成功完成。现在,需要一个外部数据库服务器配置Metastore。我们使用Apache Derby数据库。
2. hive 使用
-
创建数据库
CREATE DATABASE [IF NOT EXISTS] <database name>;
-
查询数据库
SHOW DATABASES;
-
删除数据库
DROP DATABASE [IF EXISTS] <database name>;
-
创建表
CREATE TABLE [IF NOT EXISTS] [db_name.] table_name [(col_name data_type, col_name2 data_type2, ...)] [COMMENT table_comment] [ROW FORMAT row_format] [STORED AS file_format]
如创建一张员工的表
CREATE TABLE IF NOT EXISTS employee ( id int, name String, salary String, destination String);
-
插入数据
在SQL创建表后,可以使用INSERT语句插入数据,在Hive中,可以使用LOAD DATA语句插入数据LOAD DATA [LOCAL] INPATH <filepath> [OVERWRITE] INTO TABLE <tablename>
LOCAL是标识符指定本地路径;OVERWRITE 覆盖表中的数据;
-
更改表的名字
ALTER TABLE <name> RENAME TO <new_name>
-
增加一列
ALTER TABLE <name> ADD COLUMNS (col_spec[, col_spec ...])
-
删除一列
ALTER TABLE <name> DROP [COLUMN] <column_name>
-
更改某一列的列名/类型
ALTER TABLE <name> CHANGE <column_name> <new_name new_type>
-
删除表
DROP TABLE [IF EXISTS] table_name;
-
查询语句 select
SELECT [ALL | DISTINCT] <select_expr>, <select_expr>, ... FROM <table_name> [WHERE <condition>] [GROUP BY col_list] [HAVING having_condition] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT number];
-
查询并排序
SELECT [ALL | DISTINCT] <select_expr1>, <select_expr2>, ... FROM <table_name> [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] ORDER BY <column_list> [LIMIT number];
从上面的语法可以看出hive的语法和mysql的语法是极其相似的