Finally I was able to load the data from Hive to Elasticsearch !!! Yes you are right, in the beginning I started with es-hadoop 1..3.x then replaced by 2.0.2. However somewhere in the Hive classpath it remained and caused all this trouble.
Now I do have 2 "ex_address" tables. One in "Default" and other in "Employee" database. I want to "Drop" the one from "Default" database but it won't let me without es-hadoop 1.3.x in path ! I think I will just leave it there. Thanks for your help. - Atul On Friday, November 28, 2014 4:08:55 AM UTC-8, Costin Leau wrote: > > ESStorageHandler was the name used in es-hadoop 1.3 Beta1 - in 2.0, the > name was changed to EsStorageHandler. > In case you are using the wrong class, you would get a ClassNotFound > Exception - assuming you don't have 1.3 in your > classpath. > > Regarding the error, yes, for some reason Hive since 0.12 or 0.13 is using > an illegal XML character for comments which > create an invalid > XML file. There is an issue in Hive about this but it looks to be ignored > [1] > Somebody (or maybe it was you) raised an issue on es-hadoop [2] to try and > address the bug in Hive (for our own tests we > try to "fix" the invalid file) since it seems to not be working anymore > however it's unclear to what degree this will be > possible since it's an issue in Hive itself not es-hadoop... > > Cheers, > > [1] https://issues.apache.org/jira/browse/HIVE-7024 > [2] https://github.com/elasticsearch/elasticsearch-hadoop/issues/322 > > On 11/28/14 9:53 AM, Atul Paldhikar wrote: > > Hi Costin, > > > > Actually even that issue is resolved JThere is spelling difference in > the sample available on the web, all of them have > > the storage class as “EsStorageHandler” however only your GitHub post > says it is “ESStorageHandler” which is right > > (https://gist.github.com/costin/8025827) ! The error should have been > more accurate if I am using a wrong class name. > > > > Now the next problem, the MapReduce job is failing for some reason. I am > still a beginner in Hadoop so not exactly sure > > where to debug. Here are some logs, looks like some bad character “&#” > in the job.xml file. But I that is generated by > > Hive right ? > > > > *Hive Log :------------------------------------------------* > > > > hive> insert overwrite table ex_address select name, st_no, st_name, > city, state, zip from employee.address; > > > > Total jobs = 1 > > > > Launching Job 1 out of 1 > > > > Number of reduce tasks is set to 0 since there's no reduce operator > > > > Starting Job = job_1417158738771_0001, Tracking URL = > http://finattr-comp-dev-01:8088/proxy/application_1417158738771_0001/ > > > > Kill Command = /apps/hadoop-2.5.1/bin/hadoop job -kill > job_1417158738771_0001 > > > > Hadoop job information for Stage-0: number of mappers: 0; number of > reducers: 0 > > > > 2014-11-27 23:13:37,547 Stage-0 map = 0%, reduce = 0% > > > > Ended Job = job_1417158738771_0001 with errors > > > > Error during job, obtaining debugging information... > > > > FAILED: Execution Error, return code 2 from > org.apache.hadoop.hive.ql.exec.mr.MapRedTask > > > > MapReduce Jobs Launched: > > > > Job 0: HDFS Read: 0 HDFS Write: 0 FAIL > > > > Total MapReduce CPU Time Spent: 0 msec > > > > ******************** Container Job Logs ************************* > > > > Stderr:--------------------------------------------- > > > > [sas@finattr-comp-dev-01 container_1417158738771_0001_02_000001]$ cat > stderr > > > > [Fatal Error] job.xml:606:51: Character reference "&# > > > > log4j:WARN No appenders could be found for logger > (org.apache.hadoop.mapreduce.v2.app.MRAppMaster). > > > > log4j:WARN Please initialize the log4j system properly. > > > > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig > for more info. > > > > Syslog:--------------------------------------------- > > > > [sas@finattr-comp-dev-01 container_1417158738771_0001_02_000001]$ cat > syslog > > > > 2014-11-27 23:13:36,023 INFO [main] > org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Created MRAppMaster for > application > > appattempt_1417158738771_0001_000002 > > > > 2014-11-27 23:13:36,334 FATAL [main] > org.apache.hadoop.conf.Configuration: error parsing conf job.xml > > > > org.xml.sax.SAXParseException; systemId: > > > file:///tmp/hadoop-sas/nm-local-dir/usercache/sas/appcache/application_1417158738771_0001/container_1417158738771_0001_02_000001/job.xml > > > > > <file:///\\tmp\hadoop-sas\nm-local-dir\usercache\sas\appcache\application_1417158738771_0001\container_1417158738771_0001_02_000001\job.xml>; > > > > lineNumber: 606; columnNumber: 51; Character reference "&# > > > > at > com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) > > > > > > at > com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347) > > > > > > at > javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150) > > > > at > org.apache.hadoop.conf.Configuration.parse(Configuration.java:2183) > > > > at > org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2252) > > > > at > org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2205) > > > > at > org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2112) > > > > at > org.apache.hadoop.conf.Configuration.get(Configuration.java:1078) > > > > at > org.apache.hadoop.mapreduce.v2.util.MRWebAppUtil.initialize(MRWebAppUtil.java:50) > > > > > > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1407) > > > > 2014-11-27 23:13:36,337 FATAL [main] > org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster > > > > java.lang.RuntimeException: org.xml.sax.SAXParseException; systemId: > > > file:///tmp/hadoop-sas/nm-local-dir/usercache/sas/appcache/application_1417158738771_0001/container_1417158738771_0001_02_000001/job.xml > > > > > <file:///\\tmp\hadoop-sas\nm-local-dir\usercache\sas\appcache\application_1417158738771_0001\container_1417158738771_0001_02_000001\job.xml>; > > > > lineNumber: 606; columnNumber: 51; Character reference "&# > > > > at > org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2348) > > > > at > org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2205) > > > > at > org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2112) > > > > at > org.apache.hadoop.conf.Configuration.get(Configuration.java:1078) > > > > at > org.apache.hadoop.mapreduce.v2.util.MRWebAppUtil.initialize(MRWebAppUtil.java:50) > > > > > > at > org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1407) > > > > Caused by: org.xml.sax.SAXParseException; systemId: > > > file:///tmp/hadoop-sas/nm-local-dir/usercache/sas/appcache/application_1417158738771_0001/container_1417158738771_0001_02_000001/job.xml > > > > > <file:///\\tmp\hadoop-sas\nm-local-dir\usercache\sas\appcache\application_1417158738771_0001\container_1417158738771_0001_02_000001\job.xml>; > > > > lineNumber: 606; columnNumber: 51; Character reference "&# > > > > at > com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) > > > > > > at > com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347) > > > > > > at > javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150) > > > > at > org.apache.hadoop.conf.Configuration.parse(Configuration.java:2183) > > > > at > org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2252) > > > > ... 5 more > > > > 2014-11-27 23:13:36,340 INFO [main] org.apache.hadoop.util.ExitUtil: > Exiting with status 1 > > > > Thanks > > > > - Atul > > > > > > On Thursday, November 27, 2014 8:23:25 PM UTC-8, Atul Paldhikar wrote: > > > > Hi Costin, > > > > thanks for your response. I tried all the cleanup but still no luck > :-( Here are the steps I tried > > > > 1. Removed the es-hadoop 2.1.x completed from the server > > > > 2. Updated the hive-site.xml as below, but didn't work > > > > <property> > > <name>hive.aux.jars.path</name> > > > > <value>/apps/sas/elasticsearch-hadoop-2.0.2/dist/elasticsearch-hadoop-2.0.2.jar</value> > > > > <description>A comma separated list (with no spaces) of the jar > files</description> > > </property> > > > > 3. Added the jar file in the hiveconf as below, still the same issue > > > > hive --hiveconf > hive.aux.jars.path=/apps/sas/elasticsearch-hadoop-2.0.2/dist/elasticsearch-hadoop-2.0.2.jar > > > > > > 4. Tried adding the jar file in the hive session, still didn't work > > > > add jar > /apps/sas/elasticsearch-hadoop-2.0.2/dist/elasticsearch-hadoop-2.0.2.jar; > > > > I agree that both the classes are in the same package so ideally > this issue shouldn't be coming. One thing I didn't > > understand from your suggestion is, why do I need to add the > es-hadoop.jar in the Hadoop classpath ? I added it to > > only Hive classpath as per below URL > > > > > http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/hive.html#_installation_3 > > > < > http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/hive.html#_installation_3> > > > > > > Thanks > > - Atul > > > > > > > > On Thursday, November 27, 2014 3:29:04 PM UTC-8, Costin Leau wrote: > > > > Hi, > > > > The issue is most likely caused by two different versions of > es-hadoop within your classpath, probably es-hadoop > > 2.0.x > > (2.0.2) > > and 2.1.x (2.1.0.Beta3). If they are picked up by Hive or Hadoop > it means the JVM will have two jars with > > classes under > > the same package name. > > This leads to weird conflicts as classes from jar can interact > with classes from the other jar, especially as > > between > > 2.0.x/2.1.x the code internally > > went through major changes. > > > > Make sure you have only one version of es-hadoop in your > classpath - both on the client and in the cluster. That > > includes the Hive classpath, Hadoop classpath > > as well as the submitting jar (since the library might be > embedded). > > > > P.S. IllegalAccesException indicates an illegal call - such as > calling a non-public class in a different class. > > However > > in this case both classes are in the same > > package and HiveUtils class is not private... > > > > Cheers, > > > > On 11/27/14 9:19 AM, Atul Paldhikar wrote: > > > Hi All, > > > > > > I am using Hive 0.13.1 and trying to create an external table > so data can me loaded from Hive to Elasticsearch. However > > > I keep getting the following error. I have tried with > following jars but same error. I will really appreciate for any > > > pointers. > > > > > > Thanks > > > - Atul > > > > > > <property> > > > <name>hive.aux.jars.path</name> > > > <!-- > > > > > <value>/apps/sas/elasticsearch-hadoop-2.0.2/dist/elasticsearch-hadoop-2.0.2.jar</value> > > > > > --> > > > > > <value>/apps/sas/elasticsearch-hadoop-2.1.0.Beta3/dist/elasticsearch-hadoop-2.1.0.Beta3.jar</value> > > > > > <description>A comma separated list (with no spaces) of the > jar files</description> > > > </property> > > > > > > ERROR : > > > > > > 2014-11-26 23:09:22,069 ERROR [main]: exec.DDLTask > (DDLTask.java:execute(478)) - java.lang.IllegalAccessError: tried to > > > access class org.elasticsearch.hadoop.hive.HiveUtils from > class org.elasticsearch.hadoop.hive.EsSerDe > > > at > org.elasticsearch.hadoop.hive.EsSerDe.initialize(EsSerDe.java:81) > > > at > org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:339) > > > > > at > org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:288) > > > > > at > org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:281) > > > at > org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:631) > > > at > org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:593) > > > at > org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4189) > > > at > org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:281) > > > at > org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:153) > > > at > org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:85) > > > at > org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1503) > > > at > org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1270) > > > at > org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1088) > > > at > org.apache.hadoop.hive.ql.Driver.run(Driver.java:911) > > > at > org.apache.hadoop.hive.ql.Driver.run(Driver.java:901) > > > at > org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268) > > > at > org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220) > > > at > org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423) > > > at > org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:792) > > > at > org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686) > > > at > org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625) > > > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > > > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > > > at java.lang.reflect.Method.invoke(Method.java:606) > > > at > org.apache.hadoop.util.RunJar.main(RunJar.java:212) > > > > > > 2014-11-26 23:09:22,069 ERROR [main]: ql.Driver > (SessionState.java:printError(545)) - FAILED: Execution Error, return > > > code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. tried to > access class org.elasticsearch.hadoop.hive.HiveUtils from > > > class org.elasticsearch.hadoop.hive.EsSerDe > > > > > > -- > > > You received this message because you are subscribed to the > Google Groups "elasticsearch" group. > > > To unsubscribe from this group and stop receiving emails from > it, send an email to > > >[email protected] <mailto: > [email protected] <javascript:>>. > > > To view this discussion on the web visit > > > > https://groups.google.com/d/msgid/elasticsearch/78b85fb6-6eea-46e8-964a-d96e324e780d%40googlegroups.com > > > < > https://groups.google.com/d/msgid/elasticsearch/78b85fb6-6eea-46e8-964a-d96e324e780d%40googlegroups.com> > > > > > < > https://groups.google.com/d/msgid/elasticsearch/78b85fb6-6eea-46e8-964a-d96e324e780d%40googlegroups.com?utm_medium=email&utm_source=footer > > > < > https://groups.google.com/d/msgid/elasticsearch/78b85fb6-6eea-46e8-964a-d96e324e780d%40googlegroups.com?utm_medium=email&utm_source=footer>>. > > > > > > > For more options, visithttps://groups.google.com/d/optout < > https://groups.google.com/d/optout>. > > > > -- > > Costin > > > > -- > > You received this message because you are subscribed to the Google > Groups "elasticsearch" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to > > [email protected] <javascript:> <mailto: > [email protected] <javascript:>>. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/elasticsearch/7376ee84-f847-40ca-bf09-c3a76c3df165%40googlegroups.com > > > < > https://groups.google.com/d/msgid/elasticsearch/7376ee84-f847-40ca-bf09-c3a76c3df165%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > > For more options, visit https://groups.google.com/d/optout. > > -- > Costin > > -- You received this message because you are subscribed to the Google Groups "elasticsearch" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/3c9cb6b2-2d97-4c8e-98bd-56efe3c117d8%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
