Hi Josh,

This is a known problem.

If any of the columns are map<xxx,xxx> or list<xxx,xxx>, you have to specify 
the ITEM terminator and KEY terminator. Please see the complete CREATE table 
command syntax.

Let me know if it works or not.

Zheng
From: Josh Ferguson [mailto:[EMAIL PROTECTED]
Sent: Tuesday, December 02, 2008 1:36 AM
To: [email protected]
Subject: Index Expressions

I'm getting a bunch of errors during my reduce step while doing a join between 
two string fields for some reason.

java.lang.RuntimeException: Hive 2 Internal error: cannot evaluate index 
expression on string

          at 
org.apache.hadoop.hive.ql.exec.ExprNodeIndexEvaluator.evaluate(ExprNodeIndexEvaluator.java:64)

          at 
org.apache.hadoop.hive.ql.exec.ExprNodeFuncEvaluator.evaluate(ExprNodeFuncEvaluator.java:72)

          at 
org.apache.hadoop.hive.ql.exec.ExprNodeFuncEvaluator.evaluate(ExprNodeFuncEvaluator.java:72)

          at 
org.apache.hadoop.hive.ql.exec.FilterOperator.process(FilterOperator.java:67)

          at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:262)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.createForwardJoinObject(JoinOperator.java:257)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.genObject(JoinOperator.java:477)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.genObject(JoinOperator.java:467)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.genObject(JoinOperator.java:467)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.checkAndGenObject(JoinOperator.java:507)

          at 
org.apache.hadoop.hive.ql.exec.JoinOperator.endGroup(JoinOperator.java:489)

          at 
org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:140)

          at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:430)

          at org.apache.hadoop.mapred.Child.main(Child.java:155)



The Query is

SELECT activities.*, users.* FROM activities LEFT OUTER JOIN users ON 
activities.actor_id = users.id WHERE activities.dataset='poke' AND 
activities.properties['verb'] = 'Dance';
hive> DESCRIBE activities;
OK
actor_id        string
actee_id        string
properties      map<string,string>
account string
application     string
dataset string
hour    int

hive> DESCRIBE users;
OK
id      string
properties      map<string,string>
account string
application     string
dataset string
hour    int

Thanks

Josh

Reply via email to