如何使用来自另一个 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.
是:
- id 将是不同县的数量作为自动递增数字和主键
- 县作为县的不同名称(来自来源table)
我不能给你确切的答案,因为它假设你必须尝试自己做,然后如果你有问题或疑问来这里告诉我们。但是,我可以告诉你的是,你可以使用 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 友好。
我是 Hive 的新手,遇到了一些问题。我试图在这里和其他网站找到答案,但没有成功...我也尝试了很多不同的问题,但都没有成功。
我有my source table and i want to create new table like this.
是:
- id 将是不同县的数量作为自动递增数字和主键
- 县作为县的不同名称(来自来源table)
我不能给你确切的答案,因为它假设你必须尝试自己做,然后如果你有问题或疑问来这里告诉我们。但是,我可以告诉你的是,你可以使用 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 友好。