DBeaver 连接hive 0322

说实话,我已经帮助团队多次使用 DBeaver 连接到 Hive03 2 2 ,我认为这非常简单。
高管无需学习HiveQL就可以可视化数据,特别方便。
当我在 A 部分时,有一位销售经理非常喜欢使用 DBeaver。
他甚至不懂SQL,但他可以通过DBeaver的界面通过拖放来搜索表格。

在环境准备方面,免安装版本确实省去了麻烦。
我一般直接下载6 4 位Windows,这样就不需要安装JRE,来回配置了。
关键是HiveServer2 必须启动。
上次在华东某大工厂测试,发现Hadoop集群无法运行,无法直接连接DBeaver。
当时我以为我配置错了。
但是当我请求运维的时候,发现HDFS没有启动。

设置步骤中最烦人的部分是驱动程序设置。
我有一个朋友去年就差点被这个害死。
当时使用的是Hive0.1 4 .0,但DBeaver报告驱动程序丢失。
纠结了半天,发现是JDBC驱动版本不对。
后来我们团队制定了一个规定,每次连接新环境之前,必须先确认驱动版本。
我记得Hive03 2 2 版本用hive-jdbc-3 .1 .0.jar比较稳定,但是具体版本取决于你的Hadoop和Hive版本。

测试连接时有一个细节需要特别注意,那就是防火​​墙。
上次给金融客户做事,防火墙直接屏蔽了1 0000端口,结果DBeaver显示“连接超时”,让我以为是网络问题。
最终,是客户的 IT 部门打开了大门。
建议运行netstat -tulnp | grep 1 0000 首先确认 HiveServer2 正在侦听。

在Kerberos认证方面,给我印象最深的是一个场景,客户端使用的是Windows系统,但是krb5 .conf文件的路径设置错误,导致认证失败。
后来通过将其替换为常规路径来修复此问题。
这提醒我,在做技术支持的时候,需要密切关注客户环境的差异。

对于操作界面,我一般都是依靠DBeaver的SQL编辑器,Ctrl+N新建一个脚本,写一条SELECT FROM table WHERE date='2 02 3 -01 -01 ' LIMIT 1 0;,然后Ctrl+Enter执行。
导出数据时,我经常使用 CSV 格式,这对于将其传输给 BI 团队特别实用。
他们使用 Tableau 创建报告并直接通过 CSV 导入它们,省去了我使用 Sqoop 再次传输它们的麻烦。

其实说到底,DBeaver连接Hive有三个要点:环境合适、驱动安装正确、参数填写正确。
运行几次后,这些坑就基本上可以避免了。
我有每次登录新环境时截图保存配置的习惯。
下次直接复制,改IP地址就可以了。
无论如何,工具现在有自动保存功能,避免您因错误而犯错误。

hive建表 Waiting for table metadata lock

说白了,Hive在创建表时遇到表元数据锁等待问题是很常见的,主要是因为MySQL元数据锁冲突。
我们先来说说最重要的事情。
这个问题的根本原因往往是其他进程(比如未提交的事务或者长时间运行的查询)锁定了Hive使用的MySQL元数据数据库,导致Hive无法获取元数据锁。
我们去年跑的项目,数据量在3 000左右,就遇到了这样的情况。

还有一点,定位阻塞进程有两种方法。
一种是直接查询 schema_info.innodb_trx 以查找活动事务。
关键是看trx_id和trx_mysql_thread_id这两个字段。
还有一个很重要的细节,就是过滤没有实际操作的闲置交易。
可以通过一些特定条件过滤它们,然后生成 KILL 命令直接终止它们。

一开始我以为解决这个问题的方法就是简单地停止进程,但后来我意识到我错了。
我必须小心操作,以确保完成的过程与死锁无关。
数据备份也是必须的,因为关键事务的中断可能会导致数据不一致。
等等,还有一个就是使用监控工具,比如pt-kill,自动监控并终止term交易。

最后,预防措施也很关键,例如避免长时间运行未提交的事务、定期检查和清理 MySQL 中的空闲连接以及调整 Hive Metastore 配置以减少元数据锁争用。
很多人没有注意到这一点,但我认为值得尝试。

KDP场景教程 | 将数据从关系型数据库导入到 Hive

准确来说,将MySQL数据导入HiveKDP分为三个步骤:搭建环境、编写脚本、运行作业。
但实际操作中却隐藏着很多陷阱。
首先我们来谈谈最重要的组件兼容性。
我们去年做了这个项目,由于 Flink 版本不同步,卡住了两周。
另一点是数据类型映射。
当 TEXT 在 shell 内直接转换为 STRING 时,MySQL 可能会失去有效性。
还有一个关键列表。
例如,使用FlinkSQLClient时记得先设置execution.runtime-mode='batch',否则默认的流处理模式会被破坏。
说实话,这很令人困惑。
起初我以为只要 INSERT INTO 就足够了,但后来我意识到这是错误的。
Hive 必须首先构建目录,然后运行它。

等一下,再来一个,性能调优不能错过,特别是去年有客户导入3 000级数据时,默认并行直接卡在1 00%CPU,解析前改为8 个分区。
提醒一下,权限问题是最容易解决的,尤其是在使用非 root 帐户时。
Hive表中找不到数据,导致故障排查困难。

建议您先在StreamPark中运行可视化预览,看看SQL和参数是否正确,然后再批量导入。
很多人没有注意到这一点,认为命令行有效。
然而,在脚本的中间,他们确认字段与数字不匹配,需要更改。

如何启动hive 命令

哎...Hive...这个东西...2 02 2 年我刚开始做这个的时候...真是头疼...
你说得对...启动命令...就在终端输入hive...然后回车...但是前提是...环境必须加...
说最基本的...直接上手...就在终端输入hive...回车...然后回车...交互式命令行...简单吧...
但是需要启动服务...比如,元存储...或 hiveserver2 ...您需要添加参数...
元存储...即... hive --service 元存储和...在后台运行... Hive服务器2 输入... echo $HIVE_HOME... 检查输出是否正确...
如果不正确...则需要更改它... 修改 ~/.bashrc 或 ~/.bash_profile... 添加... 导出 HIVE_HOME=/path/to/hive export PATH=$HIVE_HOME/bin:$PATH
然后... source ~/.bashrc... 使其生效...
PATH 变量...尤其重要...确保 Hive 的 bin 目录在 PATH 中...并且更喜欢...例如...您已经安装了 Hive2
Java环境...这也是一个约束...Hive需要Java才能运行...版本必须匹配...Hive3 配置JAVA_HOME... 导出 JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH
版本兼容性...小...Hive和Hadoop必须链接...比如Hive3 .x...通常用Hadoop3 .x...
如果安装多个Hive版本...需要通过PATH来安装。
例如...如果你想使用Hive3 .x...你必须确保...它的bin目录...在PATH...并且在Hive2 .x前面...
权限问题...这也很重要...用户必须知道Hive的安装目录...数据目录...如/tmp/hive...和元数据数据库...如MySQL...有读写权限...
如果没有权限...就会报...权限被拒绝...或访问被拒绝...
解决办法...就是使用chmod...修改目录权限...例如... sudo chmod -R 7 5 5 /path/to/hive...
如果搞不明白...请系统管理员...并要求他调整用户组或权限...
启动失败...如何排查...首先检查环境变量...输入... env | grep HIVE...和...env | grep PATH...看看是否正确...
然后验证Java环境...输入...java-version...确保版本符合要求...
然后...检查日志...Hive的日志...一般在$HIVE_HOME/logs/目录...可以通过日志追踪具体的错误...例如元数据数据库连接失败...
或者...简化测试...尝试启动HiveCLI...启动服务而不只是输入...hive......快速验证基本环境...是正常的...
我将引导您完成整个过程...例如,hive 安装在 /usr/local/hive... 先配置环境变量... echo '导出 HIVE_HOME=/usr/local/hive' >> ~/.bashrc echo '导出 PATH=$HIVE_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc...
然后验证java版本...敲...java-version...确保它Java8 或者1 1 是...
最后...启动HiveCLI...敲...Hive...
总结...启动Hive...基本环境配置是...重点... 环境变量... HIVE_HOME、PATH... Java版本...必须匹配hive版本... 权限...用户必须具有 hive 目录的访问权限... 版本兼容性...避免多版本冲突...
如果遇到问题...先检查日志...然后检查配置...慢慢检查环境因素...嗯...就这样...