我正在参加「掘金·启航计划」
介绍一下:
本文主要内容是,在 centos 系统上,安装 Hive 数据仓库和 Hive Sql 的基本操作,以动手实践为主要内容。
安装 Hive
-
进入 install_pack 目录
cd /usr/local/install_pack/
-
执行以下命令,下载 hive 安装包。
wget --no-check-certificate https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
-
解压Hive文件
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/software
-
进入 software 目录查看解压好的文件
cd /usr/local/software ls -lrt
-
修改目录名称
mv apache-hive-3.1.3-bin/ hive
-
配置环境变量
echo 'export HIVE_HOME=/usr/local/software/hive' >> /etc/profile echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile source /etc/profile
-
设置 hive 配置文件 (hive-env.sh),并在文件末尾添加上 HADOOP 的安装路径
cd /usr/local/software/hive/conf cp hive-env.sh.template hive-env.sh echo 'HADOOP_HOME=/usr/local/software/hadoop' >> /usr/local/software/hive/conf/hive-env.sh
-
创建 HDFS 存储 Hive 元数据的文件目录,并赋予权限
start-all.sh hadoop fs -mkdir /tmp hadoop fs -mkdir -p /usr/hive/warehouse hadoop fs -chmod g+w /tmp hadoop fs -chmod g+w /usr/hive/warehouse
-
替换冲突的包
cd /usr/local/software/hive/lib mv guava-19.0.jar guava-19.0.jar.bak cp /usr/local/software/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/software/hive/lib/
-
进入Hive执行界面(会报错)
cd /usr/local/software/hive/ hive
解决报错
-
报错信息1
hive> show tables; FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
此处出现原数据错误的原因是:hive 自带的内存数据库 derby,应该先初始化。(启 动 hive 的 derby 时自动生成 metastore_db 目录,这里需要将 metastore_db 目录删除,然后 再初始化) 退出 hive
quit;
解决办法
a. 删除数据库目录
rm -rf metastore_db/
b. 初始化 derby 数据库
schematool -initSchema -dbType derby
c. 再次测试是否可以成功查询表
hive show tables;
d. 结果
hive> show tables; OK Time taken: 0.785 seconds
e. 退出
quit;
-
报错信息2
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
解决办法
rm guava-19.0.jar
-
报错信息3
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/software/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/software/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
解决办法
cd /usr/local/software/hive-3.1.2/lib rm log4j-slf4j-impl-2.10.0.jar
Hive 基本操作
-
进入到 hive 安装包目录,对数据表进行操作
cd /usr/local/software/hive/ hive
-
创建外部表,字段分隔符为逗号
create external table movies(rank int,title string, score int ,desc string , link string) row format delimited fields terminated by ',';
-
加载本地数据
load data local inpath '/home/data/db_movie.csv' into table movies;
-
查询数据
select * from movies;
以上只是一个简单实例,具体根据需求创建表,和导入指定数据。
Linux 命令
-
wget 使用wget从网上下载软件、音乐、视频
wget --no-check-certificate -O hive.tar.gz https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
-
--no-check-certificate 忽略证书的检查
-
-O 下载文件并以指定的文件名保存文件
-
-
tar 命令相关参数
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/software
-
-z | 代表gzip,使用gzip工具进行压缩或解压
-
-x | 代表extract,解压文件(压缩文件是-c)
-
-v | 代表verbose,显示解压过程(文件列表)
-
-f | 代表file,指定要解压的文件名(or 要压缩成的文件名)
-