我们可以在同一个查询中同时拥有静态和动态分区吗?如果是,那么将如何创建文件夹。?
Can we have both Static and dynamic partition in same query ? if yes then how the folder will be created.?
我们可以在同一查询中添加静态和动态分区吗?如果是,将如何根据以下数据创建文件夹?
- 我们有不同国家和州的数据。
- 我们对 country="US" 进行静态分区,对 state 进行动态分区。
如何在 HDFS 中创建文件夹结构?
是的。文件夹结构将根据您在 table 定义中使用的顺序分层创建。例如,如果您使用如下方式定义 table:
CREATE TABLE your_table (
column1 INT,
column2 STRING
...
columnN FLOAT
)
PARTITIONED BY (country STRING, state STRING);
您可以为国家定义静态值,为州定义动态值。在这种情况下,您预先指定了静态分区的值 ('US'),并且让 Hive 读取列 "state" 的值(在 [=13= 的每一行上) ] 查询)并为每个状态动态创建文件夹(唯一的 HDFS 路径)。
INSERT OVERWRITE TABLE your_partitioned_table
PARTITION (country = 'US', state)
SELECT T.column1, T.column2, ..., T.country, T.state
FROM your_table T
WHERE T.country = 'US';
您的 HDFS 文件夹结构应该是这样的:
.../your_table/country=US/state=CA
...
.../your_table/country=US/state=NY
Here 您对如何在 Hive 中使用动态和静态分区有很好的指导。
我们可以在同一查询中添加静态和动态分区吗?如果是,将如何根据以下数据创建文件夹?
- 我们有不同国家和州的数据。
- 我们对 country="US" 进行静态分区,对 state 进行动态分区。
如何在 HDFS 中创建文件夹结构?
是的。文件夹结构将根据您在 table 定义中使用的顺序分层创建。例如,如果您使用如下方式定义 table:
CREATE TABLE your_table (
column1 INT,
column2 STRING
...
columnN FLOAT
)
PARTITIONED BY (country STRING, state STRING);
您可以为国家定义静态值,为州定义动态值。在这种情况下,您预先指定了静态分区的值 ('US'),并且让 Hive 读取列 "state" 的值(在 [=13= 的每一行上) ] 查询)并为每个状态动态创建文件夹(唯一的 HDFS 路径)。
INSERT OVERWRITE TABLE your_partitioned_table
PARTITION (country = 'US', state)
SELECT T.column1, T.column2, ..., T.country, T.state
FROM your_table T
WHERE T.country = 'US';
您的 HDFS 文件夹结构应该是这样的:
.../your_table/country=US/state=CA
...
.../your_table/country=US/state=NY
Here 您对如何在 Hive 中使用动态和静态分区有很好的指导。