问题标签 [hiveserver2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
60 浏览

apache-spark - 将小型内存中的 spark 表与巨大的 hive 表连接起来,而无需将所有记录从 hive 带到 spark

用例:我在 spark 中有一个小表(约 1000 行)和一个巨大的 hive 表(200 亿条记录)。让我们将小表称为基础,将大表称为主表。现在,基表有一个“id”列,我需要从主表中获取所有记录,其中main.external_id等于base.id。external_id 和 id 列都只有唯一值。

问题显而易见的方法是将基表注册为spark中的临时表,并使用类似的东西

然而,这意味着 spark 会从巨大的 hive 表中获取所有行,并带入内存,考虑到我们只需要大约 1000 行,我觉得这非常昂贵。我正在寻找一种方法来最小化这种网络数据传输。

我试过的

  1. 分区/分桶:这是我们想到的第一个选项,但两者都不可行,因为当列具有离散值(如城市/国家)时分区更好,而“id”列是唯一键列。对于分桶,问题是我们需要创建大量的桶,这意味着大量的文件会产生一些问题。

  2. 通过 Hiveserver2 进行 JDBC 查询:到目前为止,我们可以通过 JDBC 驱动程序对 Hive 引擎进行读取查询。我想知道是否有办法将基表从 spark 发送到 hive 引擎并在那里执行广播连接,这样网络 shuffle 只涉及较小的 table,我们不需要将较大的 table 带到 spark记忆。但是,我找不到任何可以帮助实现这一点的东西。

(显然我们可以先将基表写入 hive,然后再进行连接,但根据我从团队获得的信息,hive 写入的性能效率不高,过去几乎没有引起过问题)

有人对我上面提到的问题有任何解决方案吗?或者如果有另一种方法来达到这个结果?

PS:我使用的是 spark 2.3.2,并且对于 spark-sql、spark-hive 和 hive-jdbc jar 具有相同的版本。

0 投票
0 回答
24 浏览

python - 尝试从 python 连接 Hive 时出现错误“UnicodeError:标签太长”

我正在尝试使用以下主机和用户凭据连接 Hive DB。收到错误“UnicodeError:标签太长”。有没有办法可以克服这个问题?

我尝试了以下脚本:

0 投票
2 回答
851 浏览

docker - 无法打开与 HS2 服务器的连接

我正在尝试使用命令连接到我beeline -u jdbc:hive2://localhost:10000的 docker 容器中的 hive-server,但我得到了错误:

所以我尝试使用beeline -r,得到了这个:

beeline -help我尝试使用另一种连接方式,即,beeline -n username -p password -u jdbc:hive2://hs2.local:10012并得到了这个:

所以idk发生了什么以及如何解决这个问题。我错过了什么?

0 投票
0 回答
30 浏览

java - java进程文件描述符丢失并移动到/dev/null

我们看到了一个奇怪的问题。我们有 hiveserver2 java 应用程序(Apache Hive)。当进程启动时,它将具有如下所示的文件描述符。

但是在某个时间文件描述符 '1' 更改为 /dev/null 。进程仍在运行

例如 :-

因此,我们能够在应用程序失败时捕获任何调试日志。我们启用的任何调试日志都会丢失到 /dev/null 。当我们重新启动应用程序时,一切都会恢复。

我不知道会出什么问题。我们检查了所有应用程序日志、系统日志但没有任何线索。任何帮助表示赞赏。