hadoop在hive表中的分区

xfb7svmp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(414)

在一个博客的hive分区函数主题中,他们在下面的模式中创建了一个表。

CREATE TABLE sales (
    sales_order_id  BIGINT,
    order_amount    FLOAT,
    order_date      STRING,
    due_date        STRING,
    customer_id     BIGINT
)
PARTITIONED BY (country STRING, year INT, month INT, day INT) ;

将分区数据插入sales表,如下所示。

INSERT INTO sales
PARTITION (country = 'US', year = 2012, month = 12, day = 22)
SELECT  sales_order_id,
        order_amount,
        due_date,
        customer_id,
        cntry,
        yr,
        mo,
        d
FROM    source_view
WHERE   cntry = 'US'
        AND yr = 2012 
        AND mo = 12
        AND d = 22 ;

我的怀疑在这里。因为没有像这样的领域 cntry or yr or mo or d 在createtable模式中,如何在insert查询中 cntry or yr or mo or d . 怎么可能呢?。作者在查询中是否有任何错误,或者是否有可用的选项,如alias。

pnwntuvh

pnwntuvh1#

insert有问题。

INSERT INTO sales
PARTITION (country = 'US', year = 2012, month = 12, day = 22)
SELECT  sales_order_id,
    order_amount,
    due_date,
    customer_id
FROM    source_view
WHERE   cntry = 'US'
    AND yr = 2012 
    AND mo = 12
    AND d = 22 ;
q5iwbnjs

q5iwbnjs2#

尽管分区字段没有显式地创建为列,但它们是(伪)列,可以查询。
从hive的文档中:
您创建的分区会生成一个伪列,您可以在其中进行查询
另外(从插入文档中):
可以对表或分区进行插入。如果表已分区,则必须通过为所有分区列指定值来指定表的特定分区。

相关问题