我们计划在我们的一个项目中使用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 来看?
1条答案
按热度按时间mzaanser1#
回答我自己的问题以防有人感兴趣。实际上,我使用spark将数据加载到hive中,这就像添加这行代码以允许使用动态分区插入数据一样简单