This is an automated email from the ASF dual-hosted git repository. sarath pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push: new fcca791 ATLAS-3188: Regression: Simple insert queries are being captured in ATLAS_HOOK topic fcca791 is described below commit fcca791b60364eb0fd5ca3b74c0f52f8f781cf64 Author: Sarath Subramanian <ssubraman...@hortonworks.com> AuthorDate: Thu May 2 21:35:49 2019 -0700 ATLAS-3188: Regression: Simple insert queries are being captured in ATLAS_HOOK topic --- .../atlas/hive/hook/AtlasHiveHookContext.java | 36 +++++++++++++++++++--- .../atlas/hive/hook/events/BaseHiveEvent.java | 5 ++- .../atlas/hive/hook/events/CreateHiveProcess.java | 13 ++++++-- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/AtlasHiveHookContext.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/AtlasHiveHookContext.java index 54cd48f..76d6fe6 100644 --- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/AtlasHiveHookContext.java +++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/AtlasHiveHookContext.java @@ -26,10 +26,7 @@ import org.apache.commons.lang.RandomStringUtils; import org.apache.hadoop.hive.metastore.IHMSHandler; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.events.*; -import org.apache.hadoop.hive.ql.hooks.HookContext; -import org.apache.hadoop.hive.ql.hooks.LineageInfo; -import org.apache.hadoop.hive.ql.hooks.ReadEntity; -import org.apache.hadoop.hive.ql.hooks.WriteEntity; +import org.apache.hadoop.hive.ql.hooks.*; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.plan.HiveOperation; @@ -58,6 +55,9 @@ public class AtlasHiveHookContext { private final ListenerEvent metastoreEvent; private final IHMSHandler metastoreHandler; + private boolean isSkippedInputEntity; + private boolean isSkippedOutputEntity; + public AtlasHiveHookContext(HiveHook hook, HiveOperation hiveOperation, HookContext hiveContext, HiveHookObjectNamesCache knownObjects) throws Exception { this(hook, hiveOperation, hiveContext, knownObjects, null, null); @@ -102,6 +102,34 @@ public class AtlasHiveHookContext { return hiveContext != null ? hiveContext.getOutputs() : Collections.emptySet(); } + public boolean isSkippedInputEntity() { + return isSkippedInputEntity; + } + + public boolean isSkippedOutputEntity() { + return isSkippedOutputEntity; + } + + public void registerSkippedEntity(Entity entity) { + if (entity instanceof ReadEntity) { + registerSkippedInputEntity(); + } else if (entity instanceof WriteEntity) { + registerSkippedOutputEntity(); + } + } + + public void registerSkippedInputEntity() { + if (!isSkippedInputEntity) { + isSkippedInputEntity = true; + } + } + + public void registerSkippedOutputEntity() { + if (!isSkippedOutputEntity) { + isSkippedOutputEntity = true; + } + } + public LineageInfo getLineageInfo() { return hiveContext != null ? hiveContext.getLinfo() : null; } diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/BaseHiveEvent.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/BaseHiveEvent.java index f378d84..de8de63 100644 --- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/BaseHiveEvent.java +++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/BaseHiveEvent.java @@ -18,7 +18,6 @@ package org.apache.atlas.hive.hook.events; -import com.google.common.collect.ImmutableMap; import org.apache.atlas.hive.hook.AtlasHiveHookContext; import org.apache.atlas.hive.hook.HiveHook.PreprocessAction; import org.apache.atlas.model.instance.AtlasEntity; @@ -28,7 +27,6 @@ import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityExtInfo; import org.apache.atlas.model.instance.AtlasObjectId; import org.apache.atlas.model.instance.AtlasStruct; import org.apache.atlas.model.notification.HookNotification; -import org.apache.atlas.repository.Constants; import org.apache.atlas.type.AtlasTypeUtil; import org.apache.atlas.utils.HdfsNameServiceResolver; import org.apache.commons.collections.CollectionUtils; @@ -52,7 +50,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.net.InetAddress; import java.net.URI; import java.util.ArrayList; import java.util.Collection; @@ -268,6 +265,8 @@ public abstract class BaseHiveEvent { Table table = getHive().getTable(dbName, tableName); ret = toTableEntity(table, entityExtInfo); + } else { + context.registerSkippedEntity(entity); } } break; diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/CreateHiveProcess.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/CreateHiveProcess.java index cdb4cd2..d1511c0 100644 --- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/CreateHiveProcess.java +++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/events/CreateHiveProcess.java @@ -25,7 +25,6 @@ import org.apache.atlas.model.notification.HookNotification; import org.apache.atlas.model.notification.HookNotification.EntityCreateRequestV2; import org.apache.commons.collections.CollectionUtils; import org.apache.hadoop.hive.ql.hooks.Entity; -import org.apache.hadoop.hive.ql.hooks.HookContext; import org.apache.hadoop.hive.ql.hooks.LineageInfo; import org.apache.hadoop.hive.ql.hooks.LineageInfo.BaseColumnInfo; import org.apache.hadoop.hive.ql.hooks.LineageInfo.Dependency; @@ -112,7 +111,17 @@ public class CreateHiveProcess extends BaseHiveEvent { } } - if (!inputs.isEmpty() || !outputs.isEmpty()) { + boolean skipProcess = inputs.isEmpty() && outputs.isEmpty(); + + if (!skipProcess) { + if (inputs.isEmpty() && context.isSkippedInputEntity()) { + skipProcess = true; + } else if (outputs.isEmpty() && context.isSkippedOutputEntity()) { + skipProcess = true; + } + } + + if (!skipProcess) { AtlasEntity process = getHiveProcessEntity(inputs, outputs); ret.addEntity(process);