This is an automated email from the ASF dual-hosted git repository.
dkuzmenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 84cdf600367 HIVE-27855: Create external tables for Hive and Tez
protologging events (Kiran Velumuri, reviewed by Denys Kuzmenko, Shohei Okumiya)
84cdf600367 is described below
commit 84cdf6003678ed673d59d223ef7f4dac1aa6fdc0
Author: Kiran Velumuri <[email protected]>
AuthorDate: Mon Feb 3 22:28:05 2025 +0530
HIVE-27855: Create external tables for Hive and Tez protologging events
(Kiran Velumuri, reviewed by Denys Kuzmenko, Shohei Okumiya)
Closes #5036
---
.../hive/beeline/schematool/HiveSchemaTool.java | 61 +++++++++++++++++++
.../java/org/apache/hadoop/hive/conf/HiveConf.java | 1 +
.../org/apache/hive/jdbc/TestRestrictedList.java | 1 +
.../results/clientpositive/llap/resourceplan.q.out | 16 +++++
.../llap/strict_managed_tables_sysdb.q.out | 24 ++++++++
.../test/results/clientpositive/llap/sysdb.q.out | 71 ++++++++++++++++++++--
.../src/main/sql/hive/hive-schema-4.1.0.hive.sql | 51 ++++++++++++++++
.../main/sql/hive/upgrade-4.0.0-to-4.1.0.hive.sql | 52 ++++++++++++++++
8 files changed, 273 insertions(+), 4 deletions(-)
diff --git
a/beeline/src/java/org/apache/hive/beeline/schematool/HiveSchemaTool.java
b/beeline/src/java/org/apache/hive/beeline/schematool/HiveSchemaTool.java
index eef449e3dd1..ac053e8c1a7 100644
--- a/beeline/src/java/org/apache/hive/beeline/schematool/HiveSchemaTool.java
+++ b/beeline/src/java/org/apache/hive/beeline/schematool/HiveSchemaTool.java
@@ -22,6 +22,8 @@
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.io.output.NullOutputStream;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.HiveMetaException;
import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
import org.apache.hadoop.hive.metastore.tools.schematool.HiveSchemaHelper;
@@ -29,14 +31,21 @@
import
org.apache.hadoop.hive.metastore.tools.schematool.HiveSchemaHelper.MetaStoreConnectionInfo;
import
org.apache.hadoop.hive.metastore.tools.schematool.HiveSchemaHelper.NestedScriptParser;
import org.apache.hive.beeline.BeeLine;
+import org.apache.tez.dag.api.TezConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.hadoop.hive.metastore.utils.StringUtils.isEmpty;
public class HiveSchemaTool extends MetastoreSchemaTool {
private static final Logger LOG =
LoggerFactory.getLogger(HiveSchemaTool.class.getName());
@@ -90,6 +99,7 @@ protected void execSql(String scriptDir, String scriptFile)
@Override
protected void execSql(String sqlScriptFile) throws IOException {
+ replaceLocationForProtoLogTables(sqlScriptFile);
CommandBuilder builder = new HiveSchemaToolCommandBuilder(conf, url,
driver,
userName, passWord, sqlScriptFile);
@@ -112,6 +122,57 @@ protected void execSql(String sqlScriptFile) throws
IOException {
}
}
+ void replaceLocationForProtoLogTables(String sqlScriptFile) throws
IOException {
+ TezConfiguration tezConf = new TezConfiguration(true);
+ boolean hiveProtoLoggingEnabled = true;
+ boolean tezProtoLoggingEnabled = true;
+ String hiveProtoBaseDir = HiveConf.getVar(conf,
HiveConf.ConfVars.HIVE_PROTO_EVENTS_BASE_PATH);
+ String tezProtoBaseDir =
tezConf.get(TezConfiguration.TEZ_HISTORY_LOGGING_PROTO_BASE_DIR);
+ String hiveLocation = "/tmp/query_data"; // if Hive protologging is not
enabled, use dummy location for Hive protolog tables
+ String tezLocation = "/tmp"; // if Tez protologging is not enabled, use
dummy location for Tez protolog tables
+ String line;
+ StringBuilder newLine = new StringBuilder();
+ Map<String, String> replacements = new HashMap<>();
+
+ if (isEmpty(hiveProtoBaseDir)) {
+ LOG.error("Hive conf variable hive.hook.proto.base-directory is not set
for creating protologging tables");
+ hiveProtoLoggingEnabled = false;
+ }
+ if (isEmpty(tezProtoBaseDir)) {
+ LOG.error("Tez conf variable tez.history.logging.proto-base-dir is not
set for creating protologging tables");
+ tezProtoLoggingEnabled = false;
+ }
+
+ if (hiveProtoLoggingEnabled) {
+ String hiveProtoScheme = new
Path(hiveProtoBaseDir).getFileSystem(conf).getScheme() + ":///";
+ hiveLocation = new
Path(hiveProtoBaseDir).getFileSystem(conf).getUri().isAbsolute() ?
hiveProtoBaseDir : hiveProtoScheme + hiveProtoBaseDir;
+ }
+ if (tezProtoLoggingEnabled) {
+ String tezProtoScheme = new
Path(tezProtoBaseDir).getFileSystem(tezConf).getScheme() + ":///";
+ tezLocation = new
Path(tezProtoBaseDir).getFileSystem(tezConf).getUri().isAbsolute() ?
tezProtoBaseDir : tezProtoScheme + tezProtoBaseDir;
+ }
+
+ replacements.put("_REPLACE_WITH_QUERY_DATA_LOCATION_", hiveLocation);
+ replacements.put("_REPLACE_WITH_APP_DATA_LOCATION_", tezLocation +
"/app_data");
+ replacements.put("_REPLACE_WITH_DAG_DATA_LOCATION_", tezLocation +
"/dag_data");
+ replacements.put("_REPLACE_WITH_DAG_META_LOCATION_", tezLocation +
"/dag_meta");
+
+ try (BufferedReader reader = new BufferedReader(new
FileReader(sqlScriptFile))) {
+ while ((line = reader.readLine()) != null) {
+ for (Map.Entry<String, String> entry : replacements.entrySet()) {
+ if (line.contains(entry.getKey())) {
+ line = line.replace(entry.getKey(), entry.getValue());
+ }
+ }
+ newLine.append(line).append("\n");
+ }
+ }
+
+ try (BufferedWriter writer = new BufferedWriter(new
FileWriter(sqlScriptFile))) {
+ writer.write(newLine.toString());
+ }
+ }
+
static class HiveSchemaToolCommandBuilder extends
MetastoreSchemaTool.CommandBuilder {
HiveSchemaToolCommandBuilder(Configuration conf, String url, String
driver, String userName,
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index dd340b1bd59..4581dce12cf 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -5648,6 +5648,7 @@ public static enum ConfVars {
"hive.zookeeper.ssl.truststore.password," +
"hive.zookeeper.ssl.truststore.type," +
"hive.iceberg.allow.datafiles.in.table.location.only," +
+ "hive.hook.proto.base-directory," +
"hive.rewrite.data.policy",
"Comma separated list of configuration options which are immutable at
runtime"),
HIVE_CONF_HIDDEN_LIST("hive.conf.hidden.list",
diff --git
a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestRestrictedList.java
b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestRestrictedList.java
index a9c49efc54d..b4b80d6f8cf 100644
---
a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestRestrictedList.java
+++
b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestRestrictedList.java
@@ -110,6 +110,7 @@ public static void startServices() throws Exception {
addToExpectedRestrictedMap("hive.zookeeper.ssl.truststore.password");
addToExpectedRestrictedMap("hive.zookeeper.ssl.truststore.type");
addToExpectedRestrictedMap("hive.iceberg.allow.datafiles.in.table.location.only");
+ addToExpectedRestrictedMap("hive.hook.proto.base-directory");
addToExpectedRestrictedMap("hive.rewrite.data.policy");
checkRestrictedListMatch();
diff --git a/ql/src/test/results/clientpositive/llap/resourceplan.q.out
b/ql/src/test/results/clientpositive/llap/resourceplan.q.out
index 39bb9ea3719..8a29af8520e 100644
--- a/ql/src/test/results/clientpositive/llap/resourceplan.q.out
+++ b/ql/src/test/results/clientpositive/llap/resourceplan.q.out
@@ -218,6 +218,22 @@ sys partitions hive_test_user
USER DELETE true -1 hive_test_user
sys partitions hive_test_user USER INSERT true
-1 hive_test_user
sys partitions hive_test_user USER SELECT true
-1 hive_test_user
sys partitions hive_test_user USER UPDATE true
-1 hive_test_user
+sys proto_hive_query_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER UPDATE
true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER DELETE true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER INSERT true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER SELECT true -1 hive_test_user
diff --git
a/ql/src/test/results/clientpositive/llap/strict_managed_tables_sysdb.q.out
b/ql/src/test/results/clientpositive/llap/strict_managed_tables_sysdb.q.out
index e7b7625e086..70f240aa6a6 100644
--- a/ql/src/test/results/clientpositive/llap/strict_managed_tables_sysdb.q.out
+++ b/ql/src/test/results/clientpositive/llap/strict_managed_tables_sysdb.q.out
@@ -308,6 +308,22 @@ sys partitions hive_test_user
USER DELETE true -1 hive_test_user
sys partitions hive_test_user USER INSERT true
-1 hive_test_user
sys partitions hive_test_user USER SELECT true
-1 hive_test_user
sys partitions hive_test_user USER UPDATE true
-1 hive_test_user
+sys proto_hive_query_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER UPDATE
true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER DELETE true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER INSERT true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER SELECT true -1 hive_test_user
@@ -520,6 +536,10 @@ PREHOOK: Output: sys@partition_keys
PREHOOK: Output: sys@partition_params
PREHOOK: Output: sys@partition_stats_view
PREHOOK: Output: sys@partitions
+PREHOOK: Output: sys@proto_hive_query_data
+PREHOOK: Output: sys@proto_tez_app_data
+PREHOOK: Output: sys@proto_tez_dag_data
+PREHOOK: Output: sys@proto_tez_dag_meta
PREHOOK: Output: sys@replication_failover_failback_metrics
PREHOOK: Output: sys@replication_metrics
PREHOOK: Output: sys@replication_metrics_orig
@@ -584,6 +604,10 @@ POSTHOOK: Output: sys@partition_keys
POSTHOOK: Output: sys@partition_params
POSTHOOK: Output: sys@partition_stats_view
POSTHOOK: Output: sys@partitions
+POSTHOOK: Output: sys@proto_hive_query_data
+POSTHOOK: Output: sys@proto_tez_app_data
+POSTHOOK: Output: sys@proto_tez_dag_data
+POSTHOOK: Output: sys@proto_tez_dag_meta
POSTHOOK: Output: sys@replication_failover_failback_metrics
POSTHOOK: Output: sys@replication_metrics
POSTHOOK: Output: sys@replication_metrics_orig
diff --git a/ql/src/test/results/clientpositive/llap/sysdb.q.out
b/ql/src/test/results/clientpositive/llap/sysdb.q.out
index 4503715f230..cd351783b51 100644
--- a/ql/src/test/results/clientpositive/llap/sysdb.q.out
+++ b/ql/src/test/results/clientpositive/llap/sysdb.q.out
@@ -264,6 +264,22 @@ sys partitions hive_test_user
USER DELETE true -1 hive_test_user
sys partitions hive_test_user USER INSERT true
-1 hive_test_user
sys partitions hive_test_user USER SELECT true
-1 hive_test_user
sys partitions hive_test_user USER UPDATE true
-1 hive_test_user
+sys proto_hive_query_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_hive_query_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_app_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_data hive_test_user USER UPDATE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER DELETE
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER INSERT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER SELECT
true -1 hive_test_user
+sys proto_tez_dag_meta hive_test_user USER UPDATE
true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER DELETE true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER INSERT true -1 hive_test_user
sys replication_failover_failback_metrics hive_test_user
USER SELECT true -1 hive_test_user
@@ -781,6 +797,45 @@ partitions part_id
partitions part_name
partitions sd_id
partitions tbl_id
+proto_hive_query_data eventtype
+proto_hive_query_data executionmode
+proto_hive_query_data hivequeryid
+proto_hive_query_data operationid
+proto_hive_query_data otherinfo
+proto_hive_query_data queue
+proto_hive_query_data requestuser
+proto_hive_query_data tablesread
+proto_hive_query_data tableswritten
+proto_hive_query_data timestamp
+proto_hive_query_data user
+proto_tez_app_data app_attempt_id
+proto_tez_app_data app_id
+proto_tez_app_data dag_id
+proto_tez_app_data event_data
+proto_tez_app_data event_time
+proto_tez_app_data event_type
+proto_tez_app_data task_attempt_id
+proto_tez_app_data task_id
+proto_tez_app_data user
+proto_tez_app_data vertex_id
+proto_tez_dag_data app_attempt_id
+proto_tez_dag_data app_id
+proto_tez_dag_data dag_id
+proto_tez_dag_data event_data
+proto_tez_dag_data event_time
+proto_tez_dag_data event_type
+proto_tez_dag_data task_attempt_id
+proto_tez_dag_data task_id
+proto_tez_dag_data user
+proto_tez_dag_data vertex_id
+proto_tez_dag_meta app_file_path
+proto_tez_dag_meta app_id
+proto_tez_dag_meta app_launched_event_offset
+proto_tez_dag_meta dag_file_path
+proto_tez_dag_meta dag_finished_event_offset
+proto_tez_dag_meta dag_id
+proto_tez_dag_meta dag_submitted_event_offset
+proto_tez_dag_meta writetime
replication_failover_failback_metrics db_name
replication_failover_failback_metrics db_repl_metrics_name
replication_failover_failback_metrics db_repl_metrics_value
@@ -1124,6 +1179,10 @@ POSTHOOK: query: select pkey_name, pkey_type from
partition_keys order by pkey_n
POSTHOOK: type: QUERY
POSTHOOK: Input: sys@partition_keys
#### A masked pattern was here ####
+date string
+date string
+date string
+date string
PREHOOK: query: select part_key_val, integer_idx from partition_key_vals order
by part_key_val, integer_idx limit 5
PREHOOK: type: QUERY
PREHOOK: Input: sys@partition_key_vals
@@ -1308,7 +1367,7 @@ POSTHOOK: query: select count(*) from sds
POSTHOOK: type: QUERY
POSTHOOK: Input: sys@sds
#### A masked pattern was here ####
-79
+83
PREHOOK: query: select param_key, param_value from sd_params order by
param_key, param_value limit 5
PREHOOK: type: QUERY
PREHOOK: Input: sys@sd_params
@@ -1327,9 +1386,9 @@ POSTHOOK: Input: sys@serdes
#### A masked pattern was here ####
NULL org.apache.hadoop.hive.ql.io.orc.OrcSerde
NULL org.apache.hadoop.hive.ql.io.orc.OrcSerde
-NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+NULL org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe
+NULL org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe
+NULL org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe
PREHOOK: query: select param_key, param_value from serde_params order by
param_key, param_value limit 5
PREHOOK: type: QUERY
PREHOOK: Input: sys@serde_params
@@ -1732,6 +1791,10 @@ default sys partition_keys BASE_TABLE NULL
NULL NULL NULL NULL YES NO NULL
default sys partition_params BASE_TABLE NULL NULL
NULL NULL NULL YES NO NULL
default sys partition_stats_view VIEW NULL NULL NULL
NULL NULL NO NO NULL
default sys partitions BASE_TABLE NULL NULL NULL
NULL NULL YES NO NULL
+default sys proto_hive_query_data BASE_TABLE NULL NULL
NULL NULL NULL YES NO NULL
+default sys proto_tez_app_data BASE_TABLE NULL NULL
NULL NULL NULL YES NO NULL
+default sys proto_tez_dag_data BASE_TABLE NULL NULL
NULL NULL NULL YES NO NULL
+default sys proto_tez_dag_meta BASE_TABLE NULL NULL
NULL NULL NULL YES NO NULL
default sys replication_failover_failback_metrics VIEW NULL
NULL NULL NULL NULL NO NO NULL
default sys replication_metrics VIEW NULL NULL NULL
NULL NULL NO NO NULL
default sys replication_metrics_orig BASE_TABLE NULL
NULL NULL NULL NULL YES NO NULL
diff --git
a/standalone-metastore/metastore-server/src/main/sql/hive/hive-schema-4.1.0.hive.sql
b/standalone-metastore/metastore-server/src/main/sql/hive/hive-schema-4.1.0.hive.sql
index d02dee3e922..4049ce32d53 100644
---
a/standalone-metastore/metastore-server/src/main/sql/hive/hive-schema-4.1.0.hive.sql
+++
b/standalone-metastore/metastore-server/src/main/sql/hive/hive-schema-4.1.0.hive.sql
@@ -1592,6 +1592,57 @@ WHERE
AND
B.PARAM_KEY LIKE 'repl_metrics%';
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_HIVE_QUERY_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_QUERY_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.hadoop.hive.ql.hooks.proto.HiveHookEvents$HiveHookEventProto',
+ 'proto.maptypes'='org.apache.hadoop.hive.ql.hooks.proto.MapFieldEntry'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_APP_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_APP_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$HistoryEventProto',
+ 'proto.maptypes'='KVPair'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_DAG_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_DAG_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$HistoryEventProto',
+ 'proto.maptypes'='KVPair'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_DAG_META`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_DAG_META_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$ManifestEntryProto'
+);
+
CREATE DATABASE IF NOT EXISTS INFORMATION_SCHEMA;
diff --git
a/standalone-metastore/metastore-server/src/main/sql/hive/upgrade-4.0.0-to-4.1.0.hive.sql
b/standalone-metastore/metastore-server/src/main/sql/hive/upgrade-4.0.0-to-4.1.0.hive.sql
index 4dd7847fc81..1d42ffb242b 100644
---
a/standalone-metastore/metastore-server/src/main/sql/hive/upgrade-4.0.0-to-4.1.0.hive.sql
+++
b/standalone-metastore/metastore-server/src/main/sql/hive/upgrade-4.0.0-to-4.1.0.hive.sql
@@ -172,6 +172,58 @@ FROM
\"TAB_COL_STATS\""
);
+-- HIVE-27855
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_HIVE_QUERY_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_QUERY_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.hadoop.hive.ql.hooks.proto.HiveHookEvents$HiveHookEventProto',
+ 'proto.maptypes'='org.apache.hadoop.hive.ql.hooks.proto.MapFieldEntry'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_APP_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_APP_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$HistoryEventProto',
+ 'proto.maptypes'='KVPair'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_DAG_DATA`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_DAG_DATA_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$HistoryEventProto',
+ 'proto.maptypes'='KVPair'
+);
+
+CREATE EXTERNAL TABLE IF NOT EXISTS `PROTO_TEZ_DAG_META`
+PARTITIONED BY (
+ `date` string
+)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageSerDe'
+STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.protobuf.ProtobufMessageInputFormat'
+OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
+LOCATION '_REPLACE_WITH_DAG_META_LOCATION_'
+TBLPROPERTIES (
+
'proto.class'='org.apache.tez.dag.history.logging.proto.HistoryLoggerProtos$ManifestEntryProto'
+);
+
CREATE OR REPLACE VIEW `VERSION` AS SELECT 1 AS `VER_ID`, '4.1.0' AS
`SCHEMA_VERSION`,
'Hive release version 4.1.0' AS `VERSION_COMMENT`;