如何使用来自另一个 table 的特定列值在 Hive 中创建 table

How to create table in Hive with specific column values from another table

我是 Hive 的新手,遇到了一些问题。我试图在这里和其他网站找到答案,但没有成功...我也尝试了很多不同的问题,但都没有成功。

我有my source table and i want to create new table like this.

是:

我不能给你确切的答案,因为它假设你必须尝试自己做,然后如果你有问题或疑问来这里告诉我们。但是,我可以告诉你的是,你可以使用 insert 语句使用来自另一个 table 的数据创建一个新的 table,即:

create table CARS (name string);
insert table CARS select x, y from TABLE_2;

如果您想删除 table (CARS) 中的所有现有数据,您也可以使用 overwrite 语句。

因此,操作将是

CREATE TABLE ==> INSERT OPERATION (OVERWRITE?) + QUERY OPERATION

Hive不是RDBMS数据库,所以没有主键和外键的概念。 但是您可以在 Hive 中添加自动增量列。请尝试:

Create table new_table as 
select reflect("java.util.UUID", "randomUUID") id, countries from my_source_table;

您可以采用这种方法。

CTAS(将 Table 创建为 Select) 以你的例子为例,这个 CTAS 可以工作

CREATE TABLE t_county 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE AS
WITH t AS(
SELECT DISTINCT county, ROW_NUMBER() OVER() AS id
FROM counties)
SELECT id, county
FROM t;

您不能在 Hive 上拥有主键或外键,因为您在 RBDMS(如 Oracle)或 MySql 上拥有主键,因为 Hive 是读取模式而不是像 Oracle 一样的写入模式,因此您无法实现任何约束对 Hive 友好。