You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vi...@apache.org on 2020/08/07 21:12:53 UTC
[hive] 02/02: HIVE-23821: Send tableId in request for all the new
HMS get_partition APIs (Kishen Das reviewed by Vihang Karajgaonkar)
This is an automated email from the ASF dual-hosted git repository.
vihangk1 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
commit d87c95ecf64856860e1a37dbdb019d26c019d7bb
Author: kishendas <ki...@gmail.com>
AuthorDate: Fri Aug 7 14:00:55 2020 -0700
HIVE-23821: Send tableId in request for all the new HMS get_partition APIs (Kishen Das reviewed by Vihang Karajgaonkar)
This is same commit as 0a7791443dbb562e6c8a0493319fc52af793fe6b except
that the commit message is updated.
---
.../add/AlterTableAddPartitionOperation.java | 2 +-
.../org/apache/hadoop/hive/ql/metadata/Hive.java | 45 ++++++-
.../hadoop/hive/ql/lockmgr/TestTxnManager.java | 71 +++++++++++
...TestHiveMetaStoreClientApiArgumentsChecker.java | 141 +++++++++++++++++++++
.../hive/metastore/TestHiveMetaStoreClient.java | 119 +++++++++++++++++
5 files changed, 372 insertions(+), 6 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionOperation.java
index ddc47a4..e5dfcb6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionOperation.java
@@ -175,7 +175,7 @@ public class AlterTableAddPartitionOperation extends DDLOperation<AlterTableAddP
for (Partition partition : partitions){
partitionNames.add(getPartitionName(table, partition));
try {
- Partition p = context.getDb().getPartition(desc.getDbName(), desc.getTableName(), partition.getValues());
+ Partition p = context.getDb().getPartition(table, desc.getDbName(), desc.getTableName(), partition.getValues());
if (desc.getReplicationSpec().allowReplacementInto(p.getParameters())){
ReplicationSpec.copyLastReplId(p.getParameters(), partition.getParameters());
partitionsToAlter.add(partition);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index 4c12927..ea8c584 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -137,6 +137,8 @@ import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.GetOpenTxnsInfoResponse;
import org.apache.hadoop.hive.metastore.api.GetPartitionNamesPsRequest;
import org.apache.hadoop.hive.metastore.api.GetPartitionNamesPsResponse;
+import org.apache.hadoop.hive.metastore.api.GetPartitionRequest;
+import org.apache.hadoop.hive.metastore.api.GetPartitionResponse;
import org.apache.hadoop.hive.metastore.api.GetPartitionsPsWithAuthRequest;
import org.apache.hadoop.hive.metastore.api.GetPartitionsPsWithAuthResponse;
import org.apache.hadoop.hive.metastore.api.GetRoleGrantsForPrincipalRequest;
@@ -474,6 +476,13 @@ public class Hive {
return get(true);
}
+ @VisibleForTesting
+ public static Hive get(IMetaStoreClient msc) throws HiveException, MetaException {
+ Hive hive = get(true);
+ hive.setMSC(msc);
+ return hive;
+ }
+
public static Hive get(boolean doRegisterAllFns) throws HiveException {
return getInternal(null, false, false, doRegisterAllFns);
}
@@ -3256,10 +3265,20 @@ private void constructOneLBLocationMap(FileStatus fSta,
}
}
- public org.apache.hadoop.hive.metastore.api.Partition getPartition(String dbName, String tableName,
+ public org.apache.hadoop.hive.metastore.api.Partition getPartition(Table t, String dbName, String tableName,
List<String> params) throws HiveException {
try {
- return getMSC().getPartition(dbName, tableName, params);
+ GetPartitionRequest req = new GetPartitionRequest();
+ req.setDbName(dbName);
+ req.setTblName(tableName);
+ req.setPartVals(params);
+ if (AcidUtils.isTransactionalTable(t)) {
+ ValidWriteIdList validWriteIdList = getValidWriteIdList(dbName, tableName);
+ req.setValidWriteIdList(validWriteIdList != null ? validWriteIdList.toString() : null);
+ req.setId(t.getTTable().getId());
+ }
+ GetPartitionResponse res = getMSC().getPartitionRequest(req);
+ return res.getPartition();
} catch (Exception e) {
LOG.error(StringUtils.stringifyException(e));
throw new HiveException(e);
@@ -3623,6 +3642,7 @@ private void constructOneLBLocationMap(FileStatus fSta,
if (AcidUtils.isTransactionalTable(t)) {
ValidWriteIdList validWriteIdList = getValidWriteIdList(dbName, tblName);
req.setValidWriteIdList(validWriteIdList != null ? validWriteIdList.toString() : null);
+ req.setId(t.getTTable().getId());
}
GetPartitionNamesPsResponse res = getMSC().listPartitionNamesRequest(req);
names = res.getNames();
@@ -3661,6 +3681,7 @@ private void constructOneLBLocationMap(FileStatus fSta,
if (AcidUtils.isTransactionalTable(tbl)) {
ValidWriteIdList validWriteIdList = getValidWriteIdList(tbl.getDbName(), tbl.getTableName());
req.setValidWriteIdList(validWriteIdList != null ? validWriteIdList.toString() : null);
+ req.setId(tbl.getTTable().getId());
}
names = getMSC().listPartitionNames(req);
@@ -3697,6 +3718,7 @@ private void constructOneLBLocationMap(FileStatus fSta,
if (AcidUtils.isTransactionalTable(tbl)) {
ValidWriteIdList validWriteIdList = getValidWriteIdList(tbl.getDbName(), tbl.getTableName());
req.setValidWriteIdList(validWriteIdList != null ? validWriteIdList.toString() : null);
+ req.setId(tbl.getTTable().getId());
}
GetPartitionsPsWithAuthResponse res = getMSC().listPartitionsWithAuthInfoRequest(req);
tParts = res.getPartitions();
@@ -4006,13 +4028,16 @@ private void constructOneLBLocationMap(FileStatus fSta,
List<org.apache.hadoop.hive.metastore.api.PartitionSpec> msParts =
new ArrayList<>();
ValidWriteIdList validWriteIdList = null;
+
+ PartitionsByExprRequest req = buildPartitionByExprRequest(tbl, exprBytes, defaultPartitionName, conf,
+ null);
+
if (AcidUtils.isTransactionalTable(tbl)) {
validWriteIdList = getValidWriteIdList(tbl.getDbName(), tbl.getTableName());
+ req.setValidWriteIdList(validWriteIdList != null ? validWriteIdList.toString() : null);
+ req.setId(tbl.getTTable().getId());
}
- PartitionsByExprRequest req = buildPartitionByExprRequest(tbl, exprBytes, defaultPartitionName, conf,
- validWriteIdList != null ? validWriteIdList.toString() : null);
-
boolean hasUnknownParts = getMSC().listPartitionsSpecByExpr(req, msParts);
partitions.addAll(convertFromPartSpec(msParts.iterator(), tbl));
@@ -5260,6 +5285,16 @@ private void constructOneLBLocationMap(FileStatus fSta,
}
/**
+ * Sets the metastore client for the current thread
+ * @throws MetaException
+ */
+ @VisibleForTesting
+ public synchronized void setMSC(IMetaStoreClient client)
+ throws MetaException {
+ metaStoreClient = client;
+ }
+
+ /**
* @return the metastore client for the current thread
* @throws MetaException
*/
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestTxnManager.java b/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestTxnManager.java
new file mode 100644
index 0000000..e1e09ec
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestTxnManager.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.lockmgr;
+
+import org.apache.hadoop.hive.common.FileUtils;
+import org.apache.hadoop.hive.common.ValidTxnWriteIdList;
+import org.apache.hadoop.hive.metastore.api.CommitTxnRequest;
+import org.apache.hadoop.hive.metastore.api.GetOpenTxnsResponse;
+import org.apache.hadoop.hive.metastore.api.TxnToWriteId;
+import org.apache.hadoop.hive.metastore.api.TxnType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.hadoop.hive.common.ValidTxnList;
+import org.apache.hadoop.hive.common.ValidReadTxnList;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.ql.Context;
+import org.apache.hadoop.hive.ql.ErrorMsg;
+import org.apache.hadoop.hive.ql.DriverState;
+import org.apache.hadoop.hive.ql.QueryPlan;
+import org.apache.hadoop.hive.ql.hooks.ReadEntity;
+import org.apache.hadoop.hive.ql.hooks.WriteEntity;
+import org.apache.hadoop.hive.ql.metadata.DummyPartition;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.Partition;
+import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.util.ReflectionUtils;
+
+import java.util.*;
+
+/**
+ * An implementation of {@link HiveTxnManager} that does not support
+ * transactions.
+ * This class is only used in test.
+ */
+class TestTxnManager extends DummyTxnManager {
+ final static Character COLON = ':';
+ final static Character DOLLAR = '$';
+
+
+ @Override
+ public long getCurrentTxnId() {
+ return 1L;
+ }
+
+ @Override
+ public ValidTxnWriteIdList getValidWriteIds(List<String> tableList,
+ String validTxnList) throws LockException {
+ // Format : <txnId>$<table_name>:<hwm>:<minOpenWriteId>:<open_writeids>:<abort_writeids>
+ return new ValidTxnWriteIdList(getCurrentTxnId() + DOLLAR.toString() + "db.table" + COLON +
+ getCurrentTxnId() + COLON +
+ getCurrentTxnId() + COLON +
+ getCurrentTxnId() + COLON);
+ }
+}
+
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHiveMetaStoreClientApiArgumentsChecker.java b/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHiveMetaStoreClientApiArgumentsChecker.java
new file mode 100644
index 0000000..def25ab
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHiveMetaStoreClientApiArgumentsChecker.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.metadata;
+
+import com.google.common.collect.Lists;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.hive.common.ValidTxnList;
+import org.apache.hadoop.hive.common.ValidWriteIdList;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
+import org.apache.hadoop.hive.metastore.IMetaStoreClient;
+import org.apache.hadoop.hive.metastore.TableType;
+import org.apache.hadoop.hive.metastore.TestHiveMetaStoreClient;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
+import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
+import org.apache.hadoop.hive.ql.Context;
+import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
+import org.apache.hadoop.hive.ql.session.SessionState;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrGreaterThan;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
+import org.apache.thrift.TException;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TestHiveMetaStoreClientApiArgumentsChecker
+ *
+ * This class works with {@link TestHiveMetaStoreClient} in order to verify the arguments that
+ * are sent from HS2 to HMS APIs.
+ *
+ */
+public class TestHiveMetaStoreClientApiArgumentsChecker {
+
+ private Hive hive;
+ private IMetaStoreClient msc;
+ private FileSystem fs;
+ final static String DB_NAME = "db";
+ final static String TABLE_NAME = "table";
+ private IMetaStoreClient client;
+ private Table t;
+
+ protected static final String USER_NAME = "user0";
+
+ @Before
+ public void setUp() throws Exception {
+
+ client = new TestHiveMetaStoreClient(new HiveConf(Hive.class));
+ hive = Hive.get(client);
+ hive.getConf().set(MetastoreConf.ConfVars.FS_HANDLER_THREADS_COUNT.getVarname(), "15");
+ hive.getConf().set(MetastoreConf.ConfVars.MSCK_PATH_VALIDATION.getVarname(), "throw");
+ msc = new HiveMetaStoreClient(hive.getConf());
+
+ hive.getConf().setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
+ "org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
+ HiveConf.setBoolVar(hive.getConf(), HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false);
+ hive.getConf().set(ValidTxnList.VALID_TXNS_KEY, "1:");
+ hive.getConf().set(ValidWriteIdList.VALID_WRITEIDS_KEY, TABLE_NAME + ":1:");
+ hive.getConf().setVar(HiveConf.ConfVars.HIVE_TXN_MANAGER, "org.apache.hadoop.hive.ql.lockmgr.TestTxnManager");
+ SessionState.start(hive.getConf());
+ SessionState.get().initTxnMgr(hive.getConf());
+ Context ctx = new Context(hive.getConf());
+ SessionState.get().getTxnMgr().openTxn(ctx, USER_NAME);
+
+ t = new Table();
+ org.apache.hadoop.hive.metastore.api.Table tTable = new org.apache.hadoop.hive.metastore.api.Table();
+ tTable.setId(Long.MAX_VALUE);
+ t.setTTable(tTable);
+ Map<String, String> parameters = new HashMap<>();
+ parameters.put(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL, "true");
+ tTable.setParameters(parameters);
+ tTable.setTableType(TableType.MANAGED_TABLE.toString());
+ t.setTableName(TABLE_NAME);
+ t.setDbName(DB_NAME);
+
+ List<FieldSchema> partCols = new ArrayList<>();
+ partCols.add(new FieldSchema());
+ t.setPartCols(partCols);
+
+ }
+
+ @Test
+ public void testGetPartition() throws HiveException {
+ hive.getPartition(t, DB_NAME, TABLE_NAME, null);
+ }
+
+ @Test
+ public void testGetPartitions() throws HiveException {
+ hive.getPartitions(t);
+ }
+
+ @Test
+ public void testGetPartitionNames() throws HiveException {
+ hive.getPartitionNames(DB_NAME, TABLE_NAME, null, (short) -1);
+ }
+
+ @Test
+ public void testGetPartitionNames2() throws HiveException {
+ hive.getPartitionNames(t, null, null, (short) -1);
+ }
+
+ @Test
+ public void testGetPartitionsByExpr() throws HiveException, TException {
+ List<Partition> partitions = new ArrayList<>();
+ ExprNodeDesc column = new ExprNodeColumnDesc(TypeInfoFactory.stringTypeInfo, "rid",
+ null, false);
+ ExprNodeDesc constant = new ExprNodeConstantDesc(TypeInfoFactory.stringTypeInfo, "f");
+ List<ExprNodeDesc> children = Lists.newArrayList();
+ children.add(column);
+ children.add(constant);
+ ExprNodeGenericFuncDesc node =
+ new ExprNodeGenericFuncDesc(TypeInfoFactory.stringTypeInfo,
+ new GenericUDFOPEqualOrGreaterThan(), children);
+ hive.getPartitionsByExpr(t, node, hive.getConf(), partitions);
+ }
+}
+
+
diff --git a/standalone-metastore/metastore-common/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreClient.java b/standalone-metastore/metastore-common/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreClient.java
new file mode 100644
index 0000000..5d7ca15
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreClient.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.metastore;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.metastore.HiveMetaStoreClientWithLocalCache;
+import org.apache.hadoop.hive.metastore.IMetaStoreClient;
+import org.apache.hadoop.hive.metastore.api.GetPartitionNamesPsRequest;
+import org.apache.hadoop.hive.metastore.api.GetPartitionNamesPsResponse;
+import org.apache.hadoop.hive.metastore.api.GetPartitionRequest;
+import org.apache.hadoop.hive.metastore.api.GetPartitionResponse;
+import org.apache.hadoop.hive.metastore.api.GetPartitionsPsWithAuthRequest;
+import org.apache.hadoop.hive.metastore.api.GetPartitionsPsWithAuthResponse;
+import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
+import org.apache.hadoop.hive.metastore.api.PartitionSpec;
+import org.apache.hadoop.hive.metastore.api.PartitionsByExprRequest;
+import org.apache.hadoop.hive.metastore.api.SerDeInfo;
+import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
+import org.apache.hadoop.hive.metastore.api.Table;
+import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
+import org.apache.thrift.TException;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * TestHiveMetaStoreClient
+ *
+ * This class provides implementation of certain methods from IMetaStoreClient interface.
+ * It's mainly used to verify the arguments that are sent from HS2 to HMS APIs.
+ * This class' methods are used when HS2 methods are invoked from
+ * {@link TestHiveMetaStoreClientApiArgumentsChecker}.
+ *
+ * Tests in this class ensure that both tableId and validWriteIdList are sent from HS2 in the input of
+ * HMS get_* APIs.
+ * tableId and validWriteIdList are used to determine whether the response of a given get_* API should
+ * be served from the cache or the backing DB.
+ * So, if we want consistent read from cache, it is important to send both validWriteIdList and tableId
+ * in the get_* API request, so that we can compare them and decide where to send the data from.
+ * Right now only few get_* APIs take validWriteIdList and tableId in the input.
+ * As we support more APIs, we should add them here with appropriate test cases.
+ *
+ */
+public class TestHiveMetaStoreClient extends HiveMetaStoreClientWithLocalCache implements IMetaStoreClient {
+
+ public TestHiveMetaStoreClient(Configuration conf) throws MetaException {
+ super(conf);
+ }
+
+ public GetPartitionResponse getPartitionRequest(GetPartitionRequest req)
+ throws NoSuchObjectException, MetaException, TException {
+ assertNotNull(req.getId());
+ assertNotNull(req.getValidWriteIdList());
+ GetPartitionResponse res = new GetPartitionResponse();
+ return res;
+ }
+
+ public GetPartitionNamesPsResponse listPartitionNamesRequest(GetPartitionNamesPsRequest req)
+ throws NoSuchObjectException, MetaException, TException {
+ assertNotNull(req.getId());
+ assertNotNull(req.getValidWriteIdList());
+ GetPartitionNamesPsResponse res = new GetPartitionNamesPsResponse();
+ return res;
+ }
+
+ public GetPartitionsPsWithAuthResponse listPartitionsWithAuthInfoRequest(GetPartitionsPsWithAuthRequest req)
+ throws MetaException, TException, NoSuchObjectException {
+ assertNotNull(req.getId());
+ assertNotNull(req.getValidWriteIdList());
+ GetPartitionsPsWithAuthResponse res = new GetPartitionsPsWithAuthResponse();
+ return res;
+
+ }
+
+ public boolean listPartitionsSpecByExpr(PartitionsByExprRequest req, List<PartitionSpec> result) throws TException {
+ assertNotNull(req.getId());
+ assertNotNull(req.getValidWriteIdList());
+ return false;
+ }
+
+ public Table getTable(String dbName, String tableName, boolean getColumnStats, String engine)
+ throws MetaException, TException, NoSuchObjectException {
+ Table tTable = new Table();
+ tTable.setId(Long.MAX_VALUE);
+ Map<String, String> parameters = new HashMap<>();
+ parameters.put(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL, "true");
+ tTable.setParameters(parameters);
+ Map<String, String> sdParameters = new HashMap<>();
+ StorageDescriptor sd = new StorageDescriptor();
+ sd.setParameters(sdParameters);
+ SerDeInfo si = new SerDeInfo();
+ sd.setSerdeInfo(si);
+ tTable.setSd(sd);
+
+ return tTable;
+
+ }
+
+}