2

我需要删除配置单元表的所有现有分区。

我尝试搜索,但所有这些都在 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

4

0 回答 0