hive中的动态分区-使用一个固定列进行分区的缺点

new9mtju  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(508)

我们计划在我们的一个项目中使用hive中的动态分区特性。我知道需要设置此参数才能工作:
hive.exec.dynamic.partition.mode=非严格
在我们的集群中,这被设置为strict。我们正在努力改变这一点,但与此同时,我们计划将此作为一种解决办法:

- Create a fixed column that will always have the same hard-coded value and use this as the first static column for partitioning
 - Use the columns for dynamic partitioning after this static column

这无疑消除了设置上述参数的问题。hive只需要一个静态列,并乐于为其他列动态分区
我注意到,正如预期的那样,hive使用静态分区创建了一个hdfs文件夹,然后在该文件夹下为动态分区创建了一个文件夹。像这样:

/baseDir/staticColumn=staticValue/dynamicColumn=dynamicValue1
/baseDir/staticColumn=staticValue/dynamicColumn=dynamicValue2

因此,解决方案将hdfs中的实际数据向下推一级,这似乎不是一个问题/关注点
我的问题是,这个解决方案有什么坏处吗?从性能、可靠性的Angular 来看?

mzaanser

mzaanser1#

回答我自己的问题以防有人感兴趣。实际上,我使用spark将数据加载到hive中,这就像添加这行代码以允许使用动态分区插入数据一样简单

// Set hive conf to allow dynamic partitions to be created
sqlContext.setConf("hive.exec.dynamic.partition.mode", "nonstrict")

相关问题