如何将前 2 个 hive 表中的数据加载到下面的第三个表中?

Posted

技术标签:

【中文标题】如何将前 2 个 hive 表中的数据加载到下面的第三个表中?【英文标题】:How do I load the data from the first 2 hive tables into the 3rd one below? 【发布时间】:2020-03-21 19:42:24 【问题描述】:

以下是我所面临问题的简化版本

假设我在 Hive 中有一个员工和一个部门表。我的目标是将这两个表中的数据加载到下面的第三个表中。但是,第 3 个表有几个虚拟列设置为空,并且不会由员工或部门表中的数据填充。是否仍然可以加载员工和部门数据并将其他字段设置为空?

员工表(id,first_name,last_name,age,department_id,salary)

1,约翰,史密斯,23,1,40000

2,鲍勃,威尔逊,25,1,45000

3,弗雷德,克鲁格,37,2,75000

4,杰里米,费舍尔,41,3,110000

部门表(id,name)

1、销售

2,它

3、营销

最终结果(dummy_column0,employeeID,first_name,last_name,age,salary,department_name,dummy_column1)

null,1,John,Smith,23,40000,Sales,null

null,2,Bob,Wilson,25,45000,Sales,null

null,3,Fred,Krug,37,75000,IT,null

null,4,Jeremy,Fisher,41,110000,Marketing,null

问题给出了最终结果的架构,我如何将其余的非空数据加载到第三张表中?任何帮助将非常感激!最终结果表此时已经存在,所以我不能从头开始重新创建它

【问题讨论】:

SELECT NULL AS dummy_column0 ? 【参考方案1】:

是的。 Hive 不关心列名。它只是最重要的列的位置。您只需要以某种方式构造查询,以便虚拟列具有空值。

insert overwrite table tablename
select null, employeeID, first_name,last_name, age, salary, dept.deptName, null
from employee e join dept d on e.dept_id = d.dept_id;

【讨论】:

以上是关于如何将前 2 个 hive 表中的数据加载到下面的第三个表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将excel表中的数据自动按照一定顺序显示到下一个表中啊

sql查询将前一个值添加到下一个值[重复]

将 .txt 文件中的数据加载到 Hive 中存储为 ORC 的表中

如何使用 Spark 将镶木地板文件加载到 Hive 表中?

如何在 hive 中自动加载数据

Hive 分区表 - 尝试将数据从一个表加载到我的 Hive 中的分区表并得到 [错误 10044]*