我需要删除配置单元表的所有现有分区。
我尝试搜索,但所有这些都在 Hive 查询中。
我的分区模式是(year="2018"/month="01")
因此尝试表达year>'0'
尝试如下探索“HiveMetaStoreClient”api:
public void dropAllPartitions(String hiveDb, String hiveTable) throws MetaException, NoSuchObjectException, TException {
HiveMetaStoreClient client = new HiveMetaStoreClient(new HiveConf());
ObjectPair<Integer,byte[]> objectPair = new ObjectPair<Integer, byte[]>();
objectPair.setFirst(0);
String expr = "year>'0'";
objectPair.setSecond(expr.getBytes());
List<ObjectPair<Integer,byte[]>> partExprs = new ArrayList<ObjectPair<Integer,byte[]>>();
partExprs.add(objectPair);
client.dropPartitions(hiveDb, hiveTable, partExprs, PartitionDropOptions.instance());
}
但我得到这个错误:
MetaException(message:Index: 119, Size: 0)
我怀疑objectPair.setFirst(0);
可能是个问题。更深入地调试我发现它正在被DropPartitionsExpr.setPartArchiveLevel(partExpr.getFirst())
但找不到任何关于setPartArchiveLevel