As far as I can tell, there are two things going on here:

  1.  You are trying to access Hive via JDBC – if so, you are not going to be 
able to connect to the Hive DB the way you are trying to. If you do want to 
access Hive via JDBC, follow instructions here: 
https://cwiki.apache.org/confluence/display/Hive/HiveClient. You are going to 
need to run a standalone Hive server for JDBC access.
  2.  You are correct – it seems like you are unable to run any Hive jobs that 
require MapReduce. If you are getting the same error even with Derby, then it 
may be safe to assume that MySQL is not the culprit. I am not certain what the 
problem is here – however, you might want to run your query in local mode 
(https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-Hive%2CMapReduceandLocalMode)
 to ensure that it works. Next, I would start with a single node Hadoop 
installation (to rule out any configuration mismatch between your Ubuntu and 
Cygwin nodes).

Hope that helps.
Sriram

From: Aditya Singh30 
<aditya_sing...@infosys.com<mailto:aditya_sing...@infosys.com>>
Date: Tue, 22 Nov 2011 14:02:56 +0530
To: "user@hive.apache.org<mailto:user@hive.apache.org>" 
<user@hive.apache.org<mailto:user@hive.apache.org>>
Cc: Sriram Krishnan <skrish...@netflix.com<mailto:skrish...@netflix.com>>
Subject: RE: Mysql metastore configuration error.

I checked the TBLS table. It contains an entry for abcd.
About Hadoop only jobs. Yes I ran examples provided with Hadoop which don’t use 
hive at all. They ran fine, I checked their output also.

I tried executing “select ab from abcd” on hive CLI and checked the job tracker 
UI. There were 2 failed map jobs giving the following error:
java.lang.RuntimeException: java.util.NoSuchElementException
        at 
org.apache.hadoop.hive.ql.exec.Utilities.getMapRedWork(Utilities.java:192)
        at 
org.apache.hadoop.hive.ql.io.HiveInputFormat.init(HiveInputFormat.java:249)
        at 
org.apache.hadoop.hive.ql.io.HiveInputFormat.getRecordReader(HiveInputFormat.java:222)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:338)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
        at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.util.NoSuchElementException
        at java.util.Vector.lastElement(Vector.java:456)
        at com.sun.beans.ObjectHandler.lastExp(ObjectHandler.java:134)
        at com.sun.beans.ObjectHandler.dequeueResult(ObjectHandler.java:138)
        at java.beans.XMLDecoder.readObject(XMLDecoder.java:201)
        at 
org.apache.hadoop.hive.ql.exec.Utilities.deserializeMapRedWork(Utilities.java:462)
        at 
org.apache.hadoop.hive.ql.exec.Utilities.getMapRedWork(Utilities.java:184)
        ... 5 more

And there were no reduce jobs executed. This is the same error I got when I was 
using hive derby for metastore. I have checked for any Lower-Uppercase typos or 
spelling mistakes in the column name or table name. They are all ok.
One more thing I need to ask. Is the connection string 
(jdbc:mysql://master:3306/metastore","hiveuser","hiveuser") correct. I mean you 
said that the metastore db doesn’t contain the tables directly. And here we are 
specifying to use the metastore DB. What should be the connection string if I 
want to access the table abcd via a java program.
I tried TBLS.abcd instead of abcd in the query I was executing in the java 
program. It gave the following error:
Exception in thread "main" 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command 
denied to user 'hiveuser'@'slave' for table 'abcd'

I checked the permissions for hiveuser on metastore DB, re-run the command 
“GRANT ALL ON metastore.* TO 'hiveuser'@'%';”, but still when I run the java 
program it gives the same error.
Does this points to anything.


Regards,
Aditya

From: Sriram Krishnan [mailto:skrish...@netflix.com]
Sent: Tuesday, November 22, 2011 1:19 PM
To: user@hive.apache.org<mailto:user@hive.apache.org>
Subject: Re: Mysql metastore configuration error.

Hive tables do not have a 1-1 mapping to tables in MySQL. In other words, your 
hive table "abcd" will NOT be a table within the MySQL "metastore" database.

If you want to see what is going on in the MySQL metastore, you can do the 
following:
mysql> use metastore;
mysql> show tables;

You should see a TBLS table, which should contain an entry for the Hive table 
that you just created (I.e. abcd):

mysql> select * from TBLS;

As for your execution error, go to your job tracker UI to see if there are any 
obvious errors. Looks like people have seen errors like this before 
(http://mail-archives.apache.org/mod_mbox/hive-user/201012.mbox/%3c4d102af4.6060...@orkash.com%3E).
 Are you able to run regular Hadoop jobs (I.e. non-Hive)? If you can't run 
regular Hadoop jobs, you might want to start debugging that first.

Sriram


From: Aditya Singh30 
<aditya_sing...@infosys.com<mailto:aditya_sing...@infosys.com>>
Reply-To: <user@hive.apache.org<mailto:user@hive.apache.org>>
Date: Tue, 22 Nov 2011 12:56:16 +0530
To: "user@hive.apache.org<mailto:user@hive.apache.org>" 
<user@hive.apache.org<mailto:user@hive.apache.org>>
Subject: RE: Mysql metastore configuration error.

Sorry It was a typo..

I used “Load data local inpath ‘path/to/abcd.txt’ into table abcd;” only

Thanks for pointing it out Stephen.

Regards,
Aditya



From: Stephen Boesch [mailto:java...@gmail.com]
Sent: Tuesday, November 22, 2011 12:32 PM
To: user@hive.apache.org<mailto:user@hive.apache.org>
Subject: Re: Mysql metastore configuration error.

Was that code above  verbatim?
because there is a typo

Hive> Load sata local inpath ‘path/to/abcd.txt’ into table abcd;

(load sata not load data)
2011/11/21 Aditya Singh30 
<aditya_sing...@infosys.com<mailto:aditya_sing...@infosys.com>>
Hi Everybody,
                                I am using Apache’s Hadoop-0.20.2 and Apache’s 
Hive-0.7.0. I have a 2 node cluster. One Redhat Linux 6.0(Hadoop Server) and 
other Windows 7 using Cygwin. The Hadoop cluster is working fine. I have 
checked by executing various examples provided with Hadoop. Map reduce jobs are 
being executed fine. For Hive I am using MySQL for metastore with following 
configuration is hive-site.xml :

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hiveuser</value>
</property>

<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>false</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>


I created the DB and hiveuser in mysql using following commands:
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> SOURCE 
/usr/local/hive/scripts/metastore/upgrade/mysql/hive-schema-0.7.0.mysql.sql;

mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hiveuser';
mysql> GRANT ALL ON metastore.* TO 'hiveuser'@'%';

I created a table using the following command on hive:
hive> Create table abcd(ab int, cd string) row format delimited fields 
terminated by ‘#’ stored as textfile;

Then I created a file abcddata.txt containing the following data
11#aa
22#bb
33#cc

Then I loaded this data into table abcd using :
Hive> Load sata local inpath ‘path/to/abcd.txt’ into table abcd;

Now when I execute “select * from abcd” it runs successfully and shows the data 
in abcd.
But if I run “select ab from abcd” or “ select * from abcd where cd=’aa’” it 
returns error:

FAILED: Execution Error, return code 2 from 
org.apache.hadoop.hive.ql.exec.MapRedTask

In the logs I found:
Caused by: java.util.NoSuchElementException
        at java.util.Vector.lastElement(Vector.java:456)
        at com.sun.beans.ObjectHandler.lastExp(ObjectHandler.java:134)
        at com.sun.beans.ObjectHandler.dequeueResult(ObjectHandler.java:138)
        at java.beans.XMLDecoder.readObject(XMLDecoder.java:201)
        at 
org.apache.hadoop.hive.ql.exec.Utilities.deserializeMapRedWork(Utilities.java:462)
        at 
org.apache.hadoop.hive.ql.exec.Utilities.getMapRedWork(Utilities.java:184)


And when I tried to access Hive from a java program using connection string:
(jdbc:mysql://master:3306/metastore","hiveuser","hiveuser")
Running command “describe abcd” it returns:
Exception in thread "main" 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 
'metastore.abcd' doesn't exist

Then on the mysql server I ran:
mysql> use metastore;
mysql> show tables;

The table abcd is not there. The table is not being stored in the mysql 
metastore db.
So how come on Hive CLI, when I do “select * from abcd” it shows the data in 
the table. And “show tables” shows abcd there. It means Hive CLI is not using 
the mysql metastore for storing and “select *” statement but whenever it’s a 
statement that requires map reduce jobs or while accessing via java program 
using connection string it uses mysql metastore. It must be some configuration 
mistake I think. Please help me out.



Regards,
Aditya Singh
Infosys, India.


**************** CAUTION - Disclaimer *****************

This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely

for the use of the addressee(s). If you are not the intended recipient, please

notify the sender by e-mail and delete the original message. Further, you are 
not

to copy, disclose, or distribute this e-mail or its contents to any other 
person and

any such actions are unlawful. This e-mail may contain viruses. Infosys has 
taken

every reasonable precaution to minimize this risk, but is not liable for any 
damage

you may sustain as a result of any virus in this e-mail. You should carry out 
your

own virus checks before opening the e-mail or attachment. Infosys reserves the

right to monitor and review the content of all messages sent to or from this 
e-mail

address. Messages sent to or from this e-mail address may be stored on the

Infosys e-mail system.

***INFOSYS******** End of Disclaimer ********INFOSYS***


Reply via email to