You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafu.apache.org by ey...@apache.org on 2016/10/26 17:59:01 UTC
incubator-datafu git commit: DATAFU-25: AliasableEvalFunc should use
getInputSchema
Repository: incubator-datafu
Updated Branches:
refs/heads/master e89c780bf -> 0b4b2e178
DATAFU-25: AliasableEvalFunc should use getInputSchema
Project: http://git-wip-us.apache.org/repos/asf/incubator-datafu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-datafu/commit/0b4b2e17
Tree: http://git-wip-us.apache.org/repos/asf/incubator-datafu/tree/0b4b2e17
Diff: http://git-wip-us.apache.org/repos/asf/incubator-datafu/diff/0b4b2e17
Branch: refs/heads/master
Commit: 0b4b2e1784d2a965c18de56c7978e39109cd1fc0
Parents: e89c780
Author: eyala <ey...@apache.org>
Authored: Wed Oct 26 20:57:39 2016 +0300
Committer: eyala <ey...@apache.org>
Committed: Wed Oct 26 20:57:39 2016 +0300
----------------------------------------------------------------------
.../java/datafu/pig/util/AliasableEvalFunc.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-datafu/blob/0b4b2e17/datafu-pig/src/main/java/datafu/pig/util/AliasableEvalFunc.java
----------------------------------------------------------------------
diff --git a/datafu-pig/src/main/java/datafu/pig/util/AliasableEvalFunc.java b/datafu-pig/src/main/java/datafu/pig/util/AliasableEvalFunc.java
index c14df2c..b55ef51 100644
--- a/datafu-pig/src/main/java/datafu/pig/util/AliasableEvalFunc.java
+++ b/datafu-pig/src/main/java/datafu/pig/util/AliasableEvalFunc.java
@@ -102,9 +102,25 @@ public abstract class AliasableEvalFunc<T> extends ContextualEvalFunc<T>
*/
public abstract Schema getOutputSchema(Schema input);
+ /*
+ * Previously, this class worked by capturing the schema of the input tuple on the front-end and storing it into the UDFContext.,
+ * After {@link EvalFunc.getInputSchema} was introduced in Pig 0.11, the implementation was changed to use it and the
+ * UDF context is used only as a fallback.
+ */
@SuppressWarnings("unchecked")
private Map<String, Integer> getAliasMap() {
- return (Map<String, Integer>)getInstanceProperties().get(ALIAS_MAP_PROPERTY);
+ if (aliasToPosition == null) {
+ if (getInputSchema() == null) {
+ aliasToPosition = (Map<String, Integer>)getInstanceProperties().get(ALIAS_MAP_PROPERTY);
+ } else {
+ Map<String, Integer> aliasMap = new HashMap<String, Integer>();
+ constructFieldAliases(aliasMap, getInputSchema(), null);
+ log.debug("In instance: "+getInstanceName()+", creating alias map: " + aliasMap);
+ aliasToPosition = aliasMap;
+ }
+ }
+
+ return aliasToPosition;
}
private void setAliasMap(Map<String, Integer> aliases) {