zoukankan      html  css  js  c++  java
  • hive使用动态分区时如果动态分区的字段存在空值的问题

    hive的数据是放到hdfs中,当我们的分区字段类型为string时,如果使用动态分区向表中插入数据,而动态分区的那个字段恰好为null或者空字符串,这样hive会为其选一个默认的分区,我们查数据时分区字段的值也是这个默认分区的名,默认名为 __HIVE_DEFAULT_PARTITION__,这个默认分区的名称在配置hive时是可配置的。

    如果分区字段的类型为int,这里就有四点疑问:

    1. 分区字段的值为null或者空字符串时,hive的数据是什么样,hdfs的目录结构什么样?

    2. 分区字段的值为非空格的字符串时,hive的数据什么样,hdfs的目录结构什么样?

    3. 分区字段的值为小数时,hive的数据什么样,hdfs的目录结构什么样?

    4. 分区字段的值为空格时,hive的数据什么样,hdfs的目录结构什么样?

    以下把尝试结果给出来:

    1. hive中查到分区字段值为null,hdfs是pt=__HIVE_DEFAULT_PARTITION__

    2. hive中查到分区字段值为动态分区时的字符串,hdfs是pt=动态分区时的字符串

    3. hive中查到分区字段值为null,hdfs是pt=__HIVE_DEFAULT_PARTITION__

    4. hive中查到分区字段值为null,hdfs是pt=空格

    综上,hdfs的目录结构会把null和空字符串变成pt=__HIVE_DEFAULT_PARTITION__的形式。

    hive会把解析不成整数的值都用null代替。

    有关hive动态分区的说明见apache的wiki。

  • 相关阅读:
    Table交替行变色 鼠标经过变色 单击变色
    编程专用字体(雅黑字体+Consolas)
    Enterprise Architect学习笔记-EA中关系
    通用分页存储过程
    解决vs2008无法切换设计视图
    盒子模式
    ASP.NET界面数据绑定大大杂烩
    Tyvj P1032 Begin2 Unit1 身份验证
    NOIP2010普及组T1
    TyvjBegin P1036 Begin2 Unit1 数独验证
  • 原文地址:https://www.cnblogs.com/vanwoos/p/9533348.html
Copyright © 2011-2022 走看看