zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    c语言中srand和rand函数 生成随机数总结
    枚举类型
    VS2008快捷键使用技巧
    PV实现同步
    PV操作(深入显出)
    数字在排序数组中出现的次数
    两个链表的第一个公共结点
    数组中的逆序对
    第一个只出现一次的字符位置
    丑数
  • 原文地址:https://www.cnblogs.com/drjava/p/10561195.html
Copyright © 2011-2022 走看看