资讯动态

大数据实验6 熟悉Hive的基本操作

发布时间:2026/8/22 4:45:32 来源:尧图企业网站定制
下载和安装Hivesource ~/.bashrc配置环境变量修改/usr/local/hive/conf下的hive-site.xml使用vim编辑器新建一个配置文件hive-site.xmlbug误以为Mysql环境前面的实验里面已经配置好了直接启动但是其实是不一样的后面启动hive之后就找不到mysql了解决下载mysql启动包之后重启mysql# 1. 进入 Hive 的库目录 cd /usr/local/hive/lib # 2. 直接下载 MySQL 驱动包 (这里用 5.1.49 版本最稳) sudo wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar # 3. 赋予权限 (防止无法读取) sudo chmod 777 mysql-connector-java-5.1.49.jar结果再次启动hive的时候又报错【错误3】在启动Hive时有可能会出现Hive metastore database is not initialized的错误这里给出解决方案。【解决方案】解决Hive启动Hive metastore database is not initialized的错误。出错原因以前曾经安装了Hive或MySQL重新安装Hive和MySQL以后导致版本、配置不一致。解决方法是使用schematool工具。Hive现在包含一个用于 Hive Metastore 架构操控的脱机工具名为 schematool.此工具可用于初始化当前 Hive 版本的 Metastore 架构。此外其还可处理从较旧版本到新版本的架构升级。所以解决上述错误你可以在终端执行如下命令:cd /usr/local/hive ./bin/schematool -dbType mysql -initSchema这下正常运行了新建hive数据库配置mysql允许hive接入启动hive要先启动hadoop集群bug这里启动hive失败了第一次是因为空间不够解压后的文件不完整第二次扩容了之后再解压遇到以下错误【错误1】java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument【原因】com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。【解决方法】1.查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本2.查看hive安装目录下lib内guava.jar的版本 如果两者不一致删除版本低的并拷贝高版本的 问题解决解决实验要求1.创建一个内部表stocksbugexchange是 Hive以及 SQL的一个保留关键字不能直接使用这个作为列名解决使用反引号引起来2.创建一个外部分区表dividends3.从stocks.csv文件箱stocks表中导入数据先从http://dblab.xmu.edu.cn/post/bigdata3/下载stocks.csv和dividends.csv导入数据4.创建未分区的外部表dividends_unpartitioned,并从csv文件中导入数据5.以针对dividends_unpartitioned,的查询为基础利用Hive自动分区特性向分区表dividends各个分区中插入对应数据开启动态分区功能执行插入操作6.查询IBM从2000年起所有交付股息的交易日的收盘价使用JOIN将stocks表和dividends表连接起来7.查询苹果公司 2008年10月的涨跌情况CASE WHEN语句进行条件判断并使用LIKE过滤日期8.查询收盘价与开盘价差额最大的记录计算差价按差价倒序排序 (DESC)然后取第一条 (LIMIT 1)9.查询 Apple (symbolAAPL) 年平均调整后收盘价 (price_adj_close) 大于 50 的年份及价格用substr(ymd, 1, 4)截取年份用GROUP BY按年份分组用HAVING过滤平均值大于 50 的组10.查询每年年平均price_adj_close排名前三的公司代码及价格先按年份和公司分组算出平均价格使用RANK() OVER (PARTITION BY year ORDER BY ...)给每年的公司排名,再筛选排名小于等于 3 的记录

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价