Hive 配置单元-从三个外部表创建一个内部表
我在配置单元中有三个外部表: 表1:Hive 配置单元-从三个外部表创建一个内部表,hive,hdfs,hiveql,hive-table,Hive,Hdfs,Hiveql,Hive Table,我在配置单元中有三个外部表: 表1: CREATE EXTERNAL TABLE IF NOT EXISTS table_1( unique_key_column_1 VARCHAR, column_needed_1 DATE, redundant_column_1 VARCHAR, redundant_column_2 VARCHAR, redundant_column_3 VARCHAR, column_needed_2 TIMESTAMP, redundant_column_4 VA
CREATE EXTERNAL TABLE IF NOT EXISTS table_1(
unique_key_column_1 VARCHAR,
column_needed_1 DATE,
redundant_column_1 VARCHAR,
redundant_column_2 VARCHAR,
redundant_column_3 VARCHAR,
column_needed_2 TIMESTAMP,
redundant_column_4 VARCHAR,
redundant_column_5 VARCHAR,
column_needed_3 INT,
redundant_column_6 VARCHAR,
redundant_column_7 VARCHAR)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',’
STORED AS TEXTFILE location '/user/<username>/visdata';
我该怎么做
编辑1:
下面是我能想到的,从两张桌子连接起来。我仍然不知道如何将三个表合并成一个表:
> create table combined_table;
> insert into combined_table SELECT * FROM (SELECT r.unique_key_column_1, r.column_needed_1, r.column_needed_2, r.column_needed_3, o.r.column_needed_4, o.column_needed_5, o.column_needed_6, o.column_needed_7 FROM table_1 LEFT OUTER JOIN table_2 o ON (r.unique_key_column_1 = o.unique_key_column_2 );
编辑2:
我刚刚意识到连接是昂贵的。那么,我是否可以使用分区来实现这一点呢?@NaveenKumar这里的解决方案是为您想要的组合表编写模式。然后将3个表中的结果插入到最终的表中
INSERT INTO combinedTable [SELECT JOIN QUERY HERE]
@NaveenKumar这里的解决方案是为您想要的组合表编写模式。然后将3个表中的结果插入到最终的表中
INSERT INTO combinedTable [SELECT JOIN QUERY HERE]
您可以通过左键连接所有三个表来创建组合表。检查下面的查询 创建表和插入数据
CREATE TABLE IF NOT EXISTS COMBINED_TABLE AS
SELECT
UNIQUE_KEY_COLUMN_1,
TBLA.COLUMN_NEEDED_1,
TBLA.COLUMN_NEEDED_2,
TBLA.COLUMN_NEEDED_3,
TBLB.COLUMN_NEEDED_4,
TBLB.COLUMN_NEEDED_5,
TBLB.COLUMN_NEEDED_6,
TBLB.COLUMN_NEEDED_7,
TBLC.UNIQUE_KEY_COLUMN_2,
TBLC.COLUMN_NEEDED_8,
TBLC.COLUMN_NEEDED_9,
TBLC.COLUMN_NEEDED_10,
FROM
TABLE_1 TBLA
LEFT JOIN
TABLE_2 TBLB
ON TBLA.UNIQUE_KEY_COLUMN_1 = TBLB.UNIQUE_KEY_COLUMN_1
LEFT JOIN
TABLE_3 TBLC
ON TBLC.UNIQUE_KEY_COLUMN_2 = TBLB.UNIQUE_KEY_COLUMN_1;
如果目标表已创建,则将数据插入表中
INSERT INTO COMBINED_TABLE
SELECT
UNIQUE_KEY_COLUMN_1,
TBLA.COLUMN_NEEDED_1,
TBLA.COLUMN_NEEDED_2,
TBLA.COLUMN_NEEDED_3,
TBLB.COLUMN_NEEDED_4,
TBLB.COLUMN_NEEDED_5,
TBLB.COLUMN_NEEDED_6,
TBLB.COLUMN_NEEDED_7,
TBLC.UNIQUE_KEY_COLUMN_2,
TBLC.COLUMN_NEEDED_8,
TBLC.COLUMN_NEEDED_9,
TBLC.COLUMN_NEEDED_10,
FROM
TABLE_1 TBLA
LEFT JOIN
TABLE_2 TBLB
ON TBLA.UNIQUE_KEY_COLUMN_1 = TBLB.UNIQUE_KEY_COLUMN_1
LEFT JOIN
TABLE_3 TBLC
ON TBLC.UNIQUE_KEY_COLUMN_2 = TBLB.UNIQUE_KEY_COLUMN_1;
您可以通过左键连接所有三个表来创建组合表。检查下面的查询 创建表和插入数据
CREATE TABLE IF NOT EXISTS COMBINED_TABLE AS
SELECT
UNIQUE_KEY_COLUMN_1,
TBLA.COLUMN_NEEDED_1,
TBLA.COLUMN_NEEDED_2,
TBLA.COLUMN_NEEDED_3,
TBLB.COLUMN_NEEDED_4,
TBLB.COLUMN_NEEDED_5,
TBLB.COLUMN_NEEDED_6,
TBLB.COLUMN_NEEDED_7,
TBLC.UNIQUE_KEY_COLUMN_2,
TBLC.COLUMN_NEEDED_8,
TBLC.COLUMN_NEEDED_9,
TBLC.COLUMN_NEEDED_10,
FROM
TABLE_1 TBLA
LEFT JOIN
TABLE_2 TBLB
ON TBLA.UNIQUE_KEY_COLUMN_1 = TBLB.UNIQUE_KEY_COLUMN_1
LEFT JOIN
TABLE_3 TBLC
ON TBLC.UNIQUE_KEY_COLUMN_2 = TBLB.UNIQUE_KEY_COLUMN_1;
如果目标表已创建,则将数据插入表中
INSERT INTO COMBINED_TABLE
SELECT
UNIQUE_KEY_COLUMN_1,
TBLA.COLUMN_NEEDED_1,
TBLA.COLUMN_NEEDED_2,
TBLA.COLUMN_NEEDED_3,
TBLB.COLUMN_NEEDED_4,
TBLB.COLUMN_NEEDED_5,
TBLB.COLUMN_NEEDED_6,
TBLB.COLUMN_NEEDED_7,
TBLC.UNIQUE_KEY_COLUMN_2,
TBLC.COLUMN_NEEDED_8,
TBLC.COLUMN_NEEDED_9,
TBLC.COLUMN_NEEDED_10,
FROM
TABLE_1 TBLA
LEFT JOIN
TABLE_2 TBLB
ON TBLA.UNIQUE_KEY_COLUMN_1 = TBLB.UNIQUE_KEY_COLUMN_1
LEFT JOIN
TABLE_3 TBLC
ON TBLC.UNIQUE_KEY_COLUMN_2 = TBLB.UNIQUE_KEY_COLUMN_1;
>创建表组合_表;>插入组合表格SELECT*从SELECT r.unique\U key\U column\U 1、r.column\U REQUIRED\U 2、r.column\U REQUIRED\U 3、o.r.column\U REQUIRED\U 4、o.column\U REQUIRED\U 5、o.column\U REQUIRED\U 6、o.column\U REQUIRED\U 7中选择表格1左侧外部联接表格\U 2 o.unique\U key\U column\U 1=o.UNIQUIRE\U key\U 2;这就是我提出的,合并两个表的数据,但我不知道如何从三个表中生成一个表@steven dfheinzYou将需要使用原始表中的模式执行create语句,仅用于最终表中所需的列。所以你一共做了4张表。第四个通常不是外部移除外部+位置。前3个表成为暂存表,最后4个表是您真正想要的组合结果…我不太理解您。请你写一些语法示例。>创建表组合\u table;>插入组合表格SELECT*从SELECT r.unique\U key\U column\U 1、r.column\U REQUIRED\U 2、r.column\U REQUIRED\U 3、o.r.column\U REQUIRED\U 4、o.column\U REQUIRED\U 5、o.column\U REQUIRED\U 6、o.column\U REQUIRED\U 7中选择表格1左侧外部联接表格\U 2 o.unique\U key\U column\U 1=o.UNIQUIRE\U key\U 2;这就是我提出的,合并两个表的数据,但我不知道如何从三个表中生成一个表@steven dfheinzYou将需要使用原始表中的模式执行create语句,仅用于最终表中所需的列。所以你一共做了4张表。第四个通常不是外部移除外部+位置。前3个表成为暂存表,最后4个表是您真正想要的组合结果…我不太理解您。你能写一些语法示例吗?非常感谢。在我的问题中第一次编辑后不久,我就明白了这一点,并意识到连接是昂贵的。你能用分区帮我做这件事吗?非常感谢。在我的问题中第一次编辑后不久,我就明白了这一点,并意识到连接是昂贵的。你能帮我用分区做这个吗。