如何在代码运行后使 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 终端显示行(不仅仅是标题)?的主要内容,如果未能解决你的问题,请参考以下文章