我需要删除配置单元表的所有当前分区。
我尝试搜索,但所有搜索都在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
的任何文档