如何在代码运行后使 Hive 终端显示行(不仅仅是标题)?

Posted

技术标签:

【中文标题】如何在代码运行后使 Hive 终端显示行(不仅仅是标题)?【英文标题】:How to make Hive Terminal show rows (not just headers) after code is run? 【发布时间】:2017-08-24 06:30:12 【问题描述】:

截至目前,运行 create table 代码后,Hive 终端仅显示列标题。我应该更改哪些设置才能使 Hive 终端也显示几行,比如前 100 行?

我用来从位于数据库中的表t1 创建表t2 的代码(我不知道如何创建t1):

create table t2 as
select *
from t1
limit 100;

现在在开发过程中,我在每个 create table 部分之后写 select * from t2 limit 100; 以获取带有标题的行。

【问题讨论】:

【参考方案1】:

你不能

Hive Create Table documentation 没有提及任何有关显示记录的内容。这一点,再加上我在 Hive 的经验,让我非常有信心,你不能仅仅通过定期的配置更改来实现这一点。

当然你可以利用hive本身的代码,但这不是轻易尝试的。

你不应该想要

更改 create 命令可能会导致各种问题。特别是因为与 select 命令不同,它实际上是对元数据的操作,然后是插入。这两个通常都不会向您显示任何内容。

如果您要创建一个巨大的表格,那么显示所有内容将是有问题的。如果您选择始终只显示前 100 行,那将是不一致的。

有办法

现在,你可以做一些事情:

    更改 hive 本身(不容易,可能不理想) 分两步完成(您目前的做法) 写一个包装器:

如果您想实现自动化并且不喜欢重复代码,您可以考虑编写一个小型包装函数,以仅根据源(和限制)和目标的输入来调用创建和选择。

这种包装器可以用 bash、python 或任何你选择的方式编写。

但是,请注意,如果您喜欢临时/手动执行命令,这可能不合适,因为每次运行此类程序时都需要启动 hive JVM,因此预计响应时间会很慢。

总而言之,您最好先创建然后选择第二个。

【讨论】:

【参考方案2】:

下面提到的命令似乎可以正确显示前 100 行:

select * from <created_table> limit 100;

粘贴您为创建表而编写的代码将有助于诊断手头的问题!

不过,请检查您在创建表格时是否正确提及了元素、键值对、集合项等的分隔符。

如果您没有正确定义它们,您最终可能只会显示第一行(标题)。

【讨论】:

嗨,我已经编辑了我的问题以包含我用来创建表的代码 sn-p。 提一下代码sn-p如何创建表t1? 不幸的是,它没有解决创建问题(在原始问题中已经巧妙地提到过),所以我不得不对它投反对票。 @KeshavPradeepRamanath 我想要一个独立于表 t1 创建方式的解决方案。假设t1是数据库中的一个表,不知道t1是怎么创建的。

以上是关于如何在代码运行后使 Hive 终端显示行(不仅仅是标题)?的主要内容,如果未能解决你的问题,请参考以下文章

C#如何在点击了一个label后使其突出显示

Hive性能优化(全面)

蜂巢开始失败

导航到不同页面后使脚本继续工作

在终端中显示时如何格式化sqlplus中的列?

运行播放命令时如何关闭颜色代码?