将数据从一个表加载到配置单元中的另一个表

Posted

技术标签:

【中文标题】将数据从一个表加载到配置单元中的另一个表【英文标题】:Load data from one table to another in hive 【发布时间】:2020-12-21 10:21:32 【问题描述】:

我在 hive 中有一个名为 a.table1 的表,其中包含 id、name、class 列,并且它完全加载了数据。

id name class 
1   a     1
11  b     14

我想从 a.table1 创建一个新表 b.table2,其中包含字段 id、name、class、status。 当 id 小于 10 时,class 和 status 将具有相同的值,否则值为 0。

id name class status
1   a     1     1
11  b     14    0

我正在做的是,创建一个表:

CREATE TABLE IF NOT EXISTS b.table2(
id BIGINT,
name string,
class int,
status int
)

如何加载表格的内容?或者有什么更好的方法吗?


spark = SparkSession.builder.enableHiveSupport().getOrCreate()
sc = spark.sparkContext
sqlContext = spark._wrapped


【问题讨论】:

【参考方案1】:

只需进行选择并将结果插入 table2:

insert into b.table2 (
    select *, case when id < 10 then class else 0 end as status from a.table1
);

【讨论】:

【参考方案2】:

CTAS 将在单个语句中创建和加载表:

CREATE TABLE table2 AS
 select id, name, class, status 
   from table1;

【讨论】:

以上是关于将数据从一个表加载到配置单元中的另一个表的主要内容,如果未能解决你的问题,请参考以下文章

如何将按月分区的配置单元表中的数据加载到按周分区的配置单元表中

MAC VBA尝试从每个工作表中剪切一个单元格并粘贴到下一个空单元格中的另一张表中

如何将数据从一个表复制到 MySQL 中的另一个新表?

如何将数据从一个表复制到位于不同 Redshift 实例中的另一个表?

尝试将 hdfs 中的 csv 文件加载到配置单元表时未选择行

将数据从 MS Access 表单保存到同一个 MS Access 数据库中的另一个表?