Search code examples
hivehiveqlcreate-tablehive-partitionshiveddl

Hive - Create Table statement with 'select query' and 'partition by' commands


I want to create a Partitioned Table in Hive. I know to create a table structure first with the help of "Create table ... Partitioned by" command and then insert the data into the table using "Insert Into Table" command

But what I am trying to do is to combine these two commands into a single query like below but it is throwing errors.

CREATE TABLE test_extract AS
SELECT 
*
FROM master_extract 
PARTITION BY (year string
,month string)
;

Both Year and Month are two separate columns in the master_extract table.

Is there any way to achieve something like this ?


Solution

  • No, this is not possible, because Create Table As Select (CTAS) has restrictions:

    The target table cannot be a partitioned table.
    The target table cannot be an external table.
    The target table cannot be a list bucketing table.
    

    You can create table separately and then insert overwrite it.