Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-20929

The method HiveMetaStoreClient.getValidWriteIds(String fullTableName) failed to execute.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.1.0
    • None
    • Standalone Metastore
    • None
    • hadoop3.1.0

      hive3.1.0

    Description

      When I use the getValidWriteIds(String fullTableName) method of HiveMetaStoreClient to get writeIds, I get the errors:

      Exception in thread "main" org.apache.thrift.protocol.TProtocolException: Required field 'validTxnList' is unset! Struct:GetValidWriteIdsRequest(fullTableNames:[default.w2], validTxnList:null)
      at org.apache.hadoop.hive.metastore.api.GetValidWriteIdsRequest.validate(GetValidWriteIdsRequest.java:396)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_valid_write_ids_args.validate(ThriftHiveMetastore.java)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_valid_write_ids_args$get_valid_write_ids_argsStandardScheme.write(ThriftHiveMetastore.java)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_valid_write_ids_args$get_valid_write_ids_argsStandardScheme.write(ThriftHiveMetastore.java)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_valid_write_ids_args.write(ThriftHiveMetastore.java)
      at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:71)
      at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:62)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.send_get_valid_write_ids(ThriftHiveMetastore.java:5443)
      at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_valid_write_ids(ThriftHiveMetastore.java:5435)
      at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getValidWriteIds(HiveMetaStoreClient.java:2581)
      at com.inspur.mutation.test.TableOperate.getRowsMap(TableOperate.java:521)
      at com.inspur.procuder.GenerateData.main(GenerateData.java:65)
      

      So I can only use the following methods instead:

      //get writeIds 
      
      ValidTxnList txns = metaStoreClient.getValidTxns();
      ValidWriteIdList writeIds;
      List<String> tablesList = new ArrayList<String>();
      tablesList.add(AcidUtils.getFullTableName(table.getDbName(), table.getTableName()));
      
      List<TableValidWriteIds> writeIdList=metaStoreClient.getValidWriteIds(tablesList,txns.toString());
      writeIds = TxnUtils.createValidReaderWriteIdList(writeIdList.get(0));
      
      

      Attachments

        Activity

          People

            weizheng weizheng
            weizheng weizheng
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: