JPOX/Hive doesn't yet download the relevant client libraries based on the class name :) Drop mysql client jar in hive/lib. Also try setting org.jpox.autoCreateSchema to true.
________________________________ From: Josh Ferguson <[email protected]> Reply-To: <[email protected]> Date: Sat, 24 Jan 2009 13:06:26 -0800 To: <[email protected]> Subject: Re: Still can't get metastore working with mysql So I'm not really sure what the state of the database should be, I have a database called hive and the user has permissions to access it. I'm not sure which mysql client libraries need to be in the classpath, I assumed it was all rolled into the jpox stuff. Here is the complete error: 09/01/24 16:02:16 DEBUG exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: javax.jdo.JDOFatalInternalException Error creating transactional connection factory) at org.apache.hadoop.hive.ql.metadata.Hive.getTablesByPattern(Hive.java:446) at org.apache.hadoop.hive.ql.metadata.Hive.getAllTables(Hive.java:433) at org.apache.hadoop.hive.ql.exec.DDLTask.showTables(DDLTask.java:330) at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:127) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:212) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:174) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:207) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:268) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.util.RunJar.main(RunJar.java:165) at org.apache.hadoop.mapred.JobShell.run(JobShell.java:54) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) at org.apache.hadoop.mapred.JobShell.main(JobShell.java:68) Caused by: MetaException(message:Got exception: javax.jdo.JDOFatalInternalException Error creating transactional connection factory) at org.apache.hadoop.hive.metastore.MetaStoreUtils.logAndThrowMetaException(MetaStoreUtils.java:543) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTables(HiveMetaStoreClient.java:451) at org.apache.hadoop.hive.ql.metadata.Hive.getTablesByPattern(Hive.java:444) ... 16 more On Jan 24, 2009, at 12:58 PM, Prasad Chakka wrote: There could be many reasons for it. Could you post the stacktrace for the JDOFatal? Some reasons could be That mysql client libs are in the classpath. That there is a database called 'hive' in mysql That there is schema already created in that database (otherwise set autoCreateSchema to true) etc... Check documentation for the many jpox options ________________________________ From: Josh Ferguson <[email protected]> Reply-To: <[email protected]> Date: Sat, 24 Jan 2009 12:48:27 -0800 To: <[email protected]> Subject: Still can't get metastore working with mysql Ok I still can't manage to get the metastore working with mysql after all this time trying. The error is: FAILED: Error in metadata: MetaException(message:Got exception: javax.jdo.JDOFatalInternalException Error creating transactional connection factory) FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask The relevant config is: <!-- Hadoop Setup --> <property> <name>hadoop.bin.path</name> <value>/usr/local/hadoop/bin/hadoop</value> <description>Path to hadoop binary. Assumes that by default we are executing from hive</description> </property> <property> <name>hadoop.config.dir</name> <value>/usr/local/hadoop/conf</value> <description>Path to hadoop configuration. Again assumes that by default we are executing from hive/</description> </property> <!-- Hive Execution Parameters --> <property> <name>hive.exec.scratchdir</name> <value>/tmp/hive-${user.name}</value> <description>Scratch space for Hive jobs</description> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/hive</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>******</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>******</value> </property> <property> <name>org.jpox.autoCreateSchema</name> <value>false</value> </property> <property> <name>org.jpox.fixedDatastore</name> <value>true</value> </property> <property> <name>hive.metastore.usefilestore</name> <value>false</value> </property> <property> <name>hive.metastore.checkForDefaultDb</name> <value>false</value> </property> <property> <name>hive.metastore.rawstore.impl</name> <value>org.apache.hadoop.hive.metastore.ObjectStore</value> <description>Name of the class that implements org.apache.hadoop.hive.metastore.rawstore interface. This class is used to store and retrieval of raw metadata objects such as table, database</description> </property> <property> <name>hive.metastore.local</name> <value>true</value> <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description> </property>
