• hive 修复分区、添加二级分区


    我们在之前的文章中,介绍了二级分区,混合分区,静态分区,动态分区的区别和建表。

    今天我们聊下,当我们建好分区表。并且通过程序在表的分区目录(location)下,写入了文件。

    如何在hive中查询到插入的分区数据。

    假如我们直接查表,会发现因为没有在表的元数据中加入新增的分区信息,导致查不到数据。

    这时,

    可以通过hive修复分区的sql语句,自动修复hive的分区

    msck repair table table_name;

    或手动增加分区

    alter table add partition 'province = zhejiang';

    但是,当我们建了多级分区,如下,

    CREATE EXTERNAL TABLE `ods.employee`(
      `name` string,
    `sex` string,
    `age` int
    ) PARTITIONED
    BY ( `province` string, `city` string)

    使用hive提供的修复分区语句,会报如下的错误:

    Logging initialized using configuration in file:/usr/local/service/hive/conf/hive-log4j2.properties Async: false
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

    这时,只能通过手动的方式,增加分区了,并且要指定分区的hdfs路径:

    alter table add partition ('province=zhejiang,city=hangzhou') location 'hdfs://data/province/province=zhejiang/city=hangzhou'
  • 相关阅读:
    for循环的执行循序
    final和finally面试时最好的回答
    关于java类加载器的一些概念
    JVM内存分析
    建造者模式
    外观模式
    常用的设计模式
    Java基础知识:Java实现Map集合二级联动3
    Java基础知识:Java实现Map集合二级联动1
    MySQL数据库怎么截取字符串?
  • 原文地址:https://www.cnblogs.com/drjava/p/10561195.html
Copyright © 2020-2023  润新知