Hive的连接和运行模式
原文链接:
https://www.toutiao.com/i6771018203687551495/
Hive的连接
启动hadoop的时候将history也启动,如果出问题,可以方便我们后续定位
首先将Hive变成对外开放
启动hiveserver2
我们查看下
如果杀掉需要用kill -9 PID的方式
启动beeline
查看帮助信息
简单使用下,和mysql中显示一样
官网
我们往下拉
!connect jdbc:hive2://localhost:10000
我们直接使用root登录,不被允许
User: root is not allowed to impersonate root(state=08S01,code=0)
错误原因是
在core-site.xml中,有一个配置
这个地方可以理解为
hadoop.proxyuser.xxx.hosts和hadoop.proxyuser.xxx.groups
xxx设置为root(即你的错误日志中显示的User:xxx为什么就设置为什么)
“*”表示可通过超级代理“xxx”操作hadoop的用户、用户组和主机
主要原因是hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop
而hadoop内部还是延用linux对应的用户和权限。即你用哪个linux用户启动hadoop,对应的用户也就成为hadoop的内部用户
修改core-site.xml(我之前这个地方写的其它用户)
重新连接
退出
登录之后,可以使用一些命令
JDBC连接
我们新建项目执行代码
执行代码
我们看hive中,已经新建了表格,其它语句可以完成官网示例,不再一一练习
Hive的运行模式
依据Hive的安装和metastore的设置机器,分为下面三个模式:
嵌入模式:使用自带的derby数据库
本地模式:将metastore放在mysql,并且mysql和hive安装在同一台机器上
远程模式:将metastore放在mysql,并且mysql和hive安装在不同一台机器上
其中配置远程的配置文件是
配置内容是
指定hive连接数据库(mysql所在的机器)
端口号默认是9083
也可以启动服务:bin/hive –service metastore &(不建议这种方式)
有时候我们发现hive会跑mapreduce有时候不会,那是因为fetch模式
在hive-site.xml.template中
None模式
不管写什么SQL都会跑mapreduce
Minimal模式
当select*、针对分区字段进行过滤、以及limit不会跑mapreduce
More模式
当select*、过滤、以及limit不会跑mapreduce
虚拟列
官网
我们查询下
进入db_deptemp,执行语句
select *, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from emp;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构