【问题标题】:Hive join query to list columns from only one tableHive 连接查询仅列出一张表中的列
【发布时间】:2017-06-13 11:37:42
【问题描述】:

我正在编写一个 hive 查询来连接两个表;表 1 和表 2。结果,我只需要 table1 中的所有列,而 table2 中没有列。

我知道可以通过在 select 语句中指定 table1.column1、table1.column2.. 等手动选择所有列的解决方案。但是我在表 1 中有大约 22 列。此外,我必须对其他多个表做同样的事情,因为它的过程很痛苦。

我尝试使用“SELECT table1.*”,但出现解析异常。

有没有更好的方法?

【问题讨论】:

  • 你能帮我吗?你说你加入了两个表,table1 和 table2,然后你说你想要 table1 中的所有列,而不是 table2 中的列。那你为什么加入?
  • 我可能很困惑,但你能帮我理解你的问题吗?
  • 你应该可以做一个table1.*,你能提供堆栈吗?
  • @AnkurKumar.. 由于 Hive 不允许删除,因此我正在执行此连接(并使用结果创建新表)以从 table1 对应的 table2 中删除条目。所以我创建的新表包含表 1 中的行减去表 2 中的行(与表 1 匹配)。我希望我能理解。
  • 你能提供完整的查询吗?它会有所帮助:)

标签: join hive hiveql


【解决方案1】:

从 Hive 0.13 开始,以下查询语法有效:

SELECT a.* FROM a JOIN b ON (a.id = b.id)

此查询将从 a 中选择所有列。因此,与其输入所有列名(使查询变得繁琐),不如使用 tablealias。*

【讨论】:

  • 虽然这可能是解决方案,但最好详细解释为什么它会起作用并解决问题,也许还可以举个例子,以便将来遇到此答案的读者确切地知道它的作用。
  • 原始问题指向解析“SELECT table1.*”中的异常,但我得到一个解析异常。这可能是由于使用了低于 0.13 的先前配置单元版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多