字符串是什么字段类型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。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。