我们可以在同一个查询中添加静态和动态分区吗。如果是,将如何根据以下数据创建文件夹?我们有不同国家和州的数据。我们对country=“us”进行静态分区,对state进行动态分区。如何在hdfs中创建文件夹结构?
z8dt9xmd1#
对。文件夹结构将根据您在表定义中使用的顺序分层创建。例如,如果您使用以下内容定义表:
CREATE TABLE your_table ( column1 INT, column2 STRING ... columnN FLOAT ) PARTITIONED BY (country STRING, state STRING);
可以为国家定义静态值,为州定义动态值。在本例中,您预先指定了静态分区的值(“us”),并让hive读取列“state”的值(在该分区的每一行上) SELECT 并为每个状态动态创建文件夹(唯一的hdfs路径)。
SELECT
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
这里有一个关于如何在hive中使用动态和静态分区的极好指南。
1条答案
按热度按时间z8dt9xmd1#
对。文件夹结构将根据您在表定义中使用的顺序分层创建。例如,如果您使用以下内容定义表:
可以为国家定义静态值,为州定义动态值。在本例中,您预先指定了静态分区的值(“us”),并让hive读取列“state”的值(在该分区的每一行上)
SELECT
并为每个状态动态创建文件夹(唯一的hdfs路径)。hdfs文件夹结构如下:
这里有一个关于如何在hive中使用动态和静态分区的极好指南。