You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@spark.apache.org by Todd Nist <ts...@gmail.com> on 2015/04/01 21:19:21 UTC

Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

I have a feeling I’m missing a Jar that provides the support or could this
may be related to https://issues.apache.org/jira/browse/SPARK-5792. If it
is a Jar where would I find that ? I would have thought in the $HIVE/lib
folder, but not sure which jar contains it.

Error:

Create Metric Temporary Table for querying15/04/01 14:41:44 INFO
HiveMetaStore: 0: Opening raw store with implemenation
class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44
INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO
Persistence: Property hive.metastore.integral.jdo.pushdown unknown -
will be ignored15/04/01 14:41:45 INFO Persistence: Property
datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45
INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO
BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO
MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free
278018571)15/04/01 14:41:45 INFO BlockManager: Removing block
broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block
broadcast_0_piece0 of size 869 dropped from memory (free
278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed
broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B,
free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info
of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo:
Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0
B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned
broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore
object pin classes with
hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01
14:41:46 INFO Datastore: The class
"org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as
"embedded-only" so does not have its own datastore table.15/04/01
14:41:46 INFO Datastore: The class
"org.apache.hadoop.hive.metastore.model.MOrder" is tagged as
"embedded-only" so does not have its own datastore table.15/04/01
14:41:47 INFO Datastore: The class
"org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as
"embedded-only" so does not have its own datastore table.15/04/01
14:41:47 INFO Datastore: The class
"org.apache.hadoop.hive.metastore.model.MOrder" is tagged as
"embedded-only" so does not have its own datastore table.15/04/01
14:41:47 INFO Query: Reading in results for query
"org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection
used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized
ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in
metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in
metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in
admin role, since config is empty15/04/01 14:41:48 INFO SessionState:
No Tez session required at this point.
hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing
command: SELECT path, name, value, v1.peValue, v1.peName
             FROM metric
             lateral view json_tuple(pathElements, 'name', 'value') v1
               as peName, peValue15/04/01 14:41:49 INFO ParseDriver:
Parse CompletedException in thread "main"
java.lang.ClassNotFoundException: json_tuple
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
    at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
    at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
    at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
    at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
    at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
    at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
    at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
    at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
    at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
    at scala.Option.map(Option.scala:145)
    at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
    at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
    at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
    at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
    at scala.collection.AbstractIterator.to(Iterator.scala:1157)
    at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
    at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
    at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
    at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
    at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
    at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
    at scala.collection.immutable.List.foldLeft(List.scala:84)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
    at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
    at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
    at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
    at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
    at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
    at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
    at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
    at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
    at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
    at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
    at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
    at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
    at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Json:

"metric": {

    "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
    "pathElements": [
    {
        "node": "State",
        "value": "PA"
    },
    {
        "node": "City",
        "value": "Pittsburgh"
    },
    {
        "node": "Street",
        "value": "12345 Westbrook Drive"
    },
    {
        "node": "level",
        "value": "main"
    },
    {
        "node": "device",
        "value": "thermostat"
    }
    ],
    "name": "Current Temperature",
    "value": 29.590943279257175,
    "timestamp": "2015-03-27T14:53:46+0000"
  }

Here is the code that produces the error:

// Spark importsimport org.apache.spark.{SparkConf,
SparkContext}import org.apache.spark.SparkContext._
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{SchemaRDD,SQLContext}import
org.apache.spark.sql.hive._
// ES importsimport org.elasticsearch.spark._import
org.elasticsearch.spark.sql._
def main(args: Array[String]) {
    val sc = sparkInit

    @transient
    val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

    import hiveContext._

    val start = System.currentTimeMillis()

    /*
     * Read from ES and provide some insights with SparkSQL
     */
    val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")

    esData.collect.foreach(println(_))

    val end = System.currentTimeMillis()
    println(s"Total time: ${end-start} ms")

    println("Create Metric Temporary Table for querying")

    val schemaRDD = hiveContext.sql(
          "CREATE TEMPORARY TABLE metric     " +
          "USING org.elasticsearch.spark.sql " +
          "OPTIONS (resource 'device/metric')" )

    hiveContext.sql(
        """SELECT path, name, value, v1.peValue, v1.peName
             FROM metric
             lateral view json_tuple(pathElements, 'name', 'value') v1
               as peName, peValue
        """)
        .collect.foreach(println(_))
  }
}

More than likely I’m missing a jar, but not sure what that would be.

-Todd

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Akhil Das <ak...@sigmoidanalytics.com>.
Copy pasted his command in the same thread.

Thanks
Best Regards

On Fri, Apr 3, 2015 at 3:55 PM, ÐΞ€ρ@Ҝ (๏̯͡๏) <de...@gmail.com> wrote:

> Akhil
> you mentioned /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar .
> how come you got this lib into spark/lib folder.
> 1) did you place it there ?
> 2) What is download location ?
>
>
> On Fri, Apr 3, 2015 at 3:42 PM, Todd Nist <ts...@gmail.com> wrote:
>
>> Started the spark shell with the one jar from hive suggested:
>>
>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar
>>
>> Results in the same error:
>>
>> scala> sql(     |     """SELECT path, name, value, v1.peValue, v1.peName     |          FROM metric_table     |            lateral view json_tuple(pathElements, 'name', 'value') v1     |              as peName, peValue     |     """)
>> 15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>> 15/04/03 06:01:31 INFO ParseDriver: Parse Completed
>> res2: org.apache.spark.sql.SchemaRDD =
>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>> java.lang.ClassNotFoundException: json_tuple
>>
>> I will try the rebuild.  Thanks again for the assistance.
>>
>> -Todd
>>
>>
>> On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
>> wrote:
>>
>>> Can you try building Spark
>>> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
>>> with hive support? Before that try to run the following:
>>>
>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-
>>> cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.
>>> 1.34-bin.jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>>>
>>> Thanks
>>> Best Regards
>>>
>>> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>>>
>>>> Hi Akhil,
>>>>
>>>> This is for version 1.2.1.  Well the other thread that you reference
>>>> was me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I
>>>> did not build Spark but used the version from the Spark download site for
>>>> 1.2.1 Pre Built for Hadoop 2.4 or Later.
>>>>
>>>> Since I get the error in both 1.2.1 and 1.3.0,
>>>>
>>>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in
>>>> thread "main" java.lang.ClassNotFoundException: json_tuple at
>>>> java.net.URLClassLoader$1.run(
>>>>
>>>> It looks like I just don't have the jar.  Even including all jars in
>>>> the $HIVE/lib directory did not seem to work.  Though when looking in
>>>> $HIVE/lib for 0.13.1, I do not see any json serde or jackson files.  I do
>>>> see that hive-exec.jar contains
>>>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>>>> you know if there is another Jar that is required or should it work just by
>>>> including all jars from $HIVE/lib?
>>>>
>>>> I can build it locally, but did not think that was required based on
>>>> the version I downloaded; is that not the case?
>>>>
>>>> Thanks for the assistance.
>>>>
>>>> -Todd
>>>>
>>>>
>>>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>> wrote:
>>>>
>>>>> How did you build spark? which version of spark are you having?
>>>>> Doesn't this thread already explains it?
>>>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>>>
>>>>> Thanks
>>>>> Best Regards
>>>>>
>>>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>>>>>
>>>>>> Hi Akhil,
>>>>>>
>>>>>> Tried your suggestion to no avail.  I actually to not see and
>>>>>> "jackson" or "json serde" jars in the $HIVE/lib directory.  This is hive
>>>>>> 0.13.1 and spark 1.2.1
>>>>>>
>>>>>> Here is what I did:
>>>>>>
>>>>>> I have added the lib folder to the –jars option when starting the
>>>>>> spark-shell,
>>>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>>>> directory.
>>>>>>
>>>>>> I start the spark-shell as follows:
>>>>>>
>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>>>
>>>>>> and like this
>>>>>>
>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>>>
>>>>>> I’m just doing this in the spark-shell now:
>>>>>>
>>>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>>>     """name": "Memory Usage (%)""",
>>>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>>>> rdd1.printSchema()
>>>>>> rdd1.registerTempTable("metric_table")
>>>>>> sql(
>>>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>          FROM metric_table
>>>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>              as peName, peValue
>>>>>>     """)
>>>>>>     .collect.foreach(println(_))
>>>>>>
>>>>>> It results in the same error:
>>>>>>
>>>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>>>> java.lang.ClassNotFoundException: json_tuple
>>>>>>
>>>>>> Any other suggestions or am I doing something else wrong here?
>>>>>>
>>>>>> -Todd
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <akhil@sigmoidanalytics.com
>>>>>> > wrote:
>>>>>>
>>>>>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>>>>>> specific jar, you could look fr jackson or json serde in it.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Best Regards
>>>>>>>
>>>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I have a feeling I’m missing a Jar that provides the support or
>>>>>>>> could this may be related to
>>>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>>>> not sure which jar contains it.
>>>>>>>>
>>>>>>>> Error:
>>>>>>>>
>>>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>              FROM metric
>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>>>
>>>>>>>> Json:
>>>>>>>>
>>>>>>>> "metric": {
>>>>>>>>
>>>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>>>     "pathElements": [
>>>>>>>>     {
>>>>>>>>         "node": "State",
>>>>>>>>         "value": "PA"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "City",
>>>>>>>>         "value": "Pittsburgh"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "Street",
>>>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "level",
>>>>>>>>         "value": "main"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "device",
>>>>>>>>         "value": "thermostat"
>>>>>>>>     }
>>>>>>>>     ],
>>>>>>>>     "name": "Current Temperature",
>>>>>>>>     "value": 29.590943279257175,
>>>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>>>   }
>>>>>>>>
>>>>>>>> Here is the code that produces the error:
>>>>>>>>
>>>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>>>> import org.apache.spark.rdd.RDD
>>>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>>>> def main(args: Array[String]) {
>>>>>>>>     val sc = sparkInit
>>>>>>>>
>>>>>>>>     @transient
>>>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>>>
>>>>>>>>     import hiveContext._
>>>>>>>>
>>>>>>>>     val start = System.currentTimeMillis()
>>>>>>>>
>>>>>>>>     /*
>>>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>>>      */
>>>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>>>
>>>>>>>>     esData.collect.foreach(println(_))
>>>>>>>>
>>>>>>>>     val end = System.currentTimeMillis()
>>>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>>>
>>>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>>>
>>>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>>>
>>>>>>>>     hiveContext.sql(
>>>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>              FROM metric
>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>                as peName, peValue
>>>>>>>>         """)
>>>>>>>>         .collect.foreach(println(_))
>>>>>>>>   }
>>>>>>>> }
>>>>>>>>
>>>>>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>>>>>
>>>>>>>> -Todd
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>
> --
> Deepak
>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Todd Nist <ts...@gmail.com>.
Hi Deepujain,

I did include the jar file, I believe it is hive-exe.jar, through the
--jars option:

./bin/spark-shell --master spark://radtech.io:7077
--total-executor-cores 2 --driver-class-path
/usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars
/opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar

Results in the same error.  I'm going to do the rebuild in a few minutes.

Thanks for the assistance.

-Todd



On Fri, Apr 3, 2015 at 6:30 AM, ÐΞ€ρ@Ҝ (๏̯͡๏) <de...@gmail.com> wrote:

> I think you need to include the jar file through --jars option that
> contains the hive definition (code) of UDF json_tuple. That should solve
> your problem.
>
> On Fri, Apr 3, 2015 at 3:57 PM, Todd Nist <ts...@gmail.com> wrote:
>
>> I placed it there.  It was downloaded from MySql site.
>>
>> On Fri, Apr 3, 2015 at 6:25 AM, ÐΞ€ρ@Ҝ (๏̯͡๏) <de...@gmail.com>
>> wrote:
>>
>>> Akhil
>>> you mentioned /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>> . how come you got this lib into spark/lib folder.
>>> 1) did you place it there ?
>>> 2) What is download location ?
>>>
>>>
>>> On Fri, Apr 3, 2015 at 3:42 PM, Todd Nist <ts...@gmail.com> wrote:
>>>
>>>> Started the spark shell with the one jar from hive suggested:
>>>>
>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar
>>>>
>>>> Results in the same error:
>>>>
>>>> scala> sql(     |     """SELECT path, name, value, v1.peValue, v1.peName     |          FROM metric_table     |            lateral view json_tuple(pathElements, 'name', 'value') v1     |              as peName, peValue     |     """)
>>>> 15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>> 15/04/03 06:01:31 INFO ParseDriver: Parse Completed
>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>> java.lang.ClassNotFoundException: json_tuple
>>>>
>>>> I will try the rebuild.  Thanks again for the assistance.
>>>>
>>>> -Todd
>>>>
>>>>
>>>> On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>> wrote:
>>>>
>>>>> Can you try building Spark
>>>>> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
>>>>> with hive support? Before that try to run the following:
>>>>>
>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-
>>>>> cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-
>>>>> 5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>>>>>
>>>>> Thanks
>>>>> Best Regards
>>>>>
>>>>> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>>>>>
>>>>>> Hi Akhil,
>>>>>>
>>>>>> This is for version 1.2.1.  Well the other thread that you reference
>>>>>> was me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I
>>>>>> did not build Spark but used the version from the Spark download site for
>>>>>> 1.2.1 Pre Built for Hadoop 2.4 or Later.
>>>>>>
>>>>>> Since I get the error in both 1.2.1 and 1.3.0,
>>>>>>
>>>>>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in
>>>>>> thread "main" java.lang.ClassNotFoundException: json_tuple at
>>>>>> java.net.URLClassLoader$1.run(
>>>>>>
>>>>>> It looks like I just don't have the jar.  Even including all jars in
>>>>>> the $HIVE/lib directory did not seem to work.  Though when looking in
>>>>>> $HIVE/lib for 0.13.1, I do not see any json serde or jackson files.  I do
>>>>>> see that hive-exec.jar contains
>>>>>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>>>>>> you know if there is another Jar that is required or should it work just by
>>>>>> including all jars from $HIVE/lib?
>>>>>>
>>>>>> I can build it locally, but did not think that was required based on
>>>>>> the version I downloaded; is that not the case?
>>>>>>
>>>>>> Thanks for the assistance.
>>>>>>
>>>>>> -Todd
>>>>>>
>>>>>>
>>>>>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <akhil@sigmoidanalytics.com
>>>>>> > wrote:
>>>>>>
>>>>>>> How did you build spark? which version of spark are you having?
>>>>>>> Doesn't this thread already explains it?
>>>>>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>>>>>
>>>>>>> Thanks
>>>>>>> Best Regards
>>>>>>>
>>>>>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Akhil,
>>>>>>>>
>>>>>>>> Tried your suggestion to no avail.  I actually to not see and
>>>>>>>> "jackson" or "json serde" jars in the $HIVE/lib directory.  This is hive
>>>>>>>> 0.13.1 and spark 1.2.1
>>>>>>>>
>>>>>>>> Here is what I did:
>>>>>>>>
>>>>>>>> I have added the lib folder to the –jars option when starting the
>>>>>>>> spark-shell,
>>>>>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>>>>>> directory.
>>>>>>>>
>>>>>>>> I start the spark-shell as follows:
>>>>>>>>
>>>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>>>>>
>>>>>>>> and like this
>>>>>>>>
>>>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>>>>>
>>>>>>>> I’m just doing this in the spark-shell now:
>>>>>>>>
>>>>>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>>>>>     """name": "Memory Usage (%)""",
>>>>>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>>>>>> rdd1.printSchema()
>>>>>>>> rdd1.registerTempTable("metric_table")
>>>>>>>> sql(
>>>>>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>          FROM metric_table
>>>>>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>              as peName, peValue
>>>>>>>>     """)
>>>>>>>>     .collect.foreach(println(_))
>>>>>>>>
>>>>>>>> It results in the same error:
>>>>>>>>
>>>>>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>>>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>>>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>>>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>>>>>> java.lang.ClassNotFoundException: json_tuple
>>>>>>>>
>>>>>>>> Any other suggestions or am I doing something else wrong here?
>>>>>>>>
>>>>>>>> -Todd
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <
>>>>>>>> akhil@sigmoidanalytics.com> wrote:
>>>>>>>>
>>>>>>>>> Try adding all the jars in your $HIVE/lib directory. If you want
>>>>>>>>> the specific jar, you could look fr jackson or json serde in it.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> Best Regards
>>>>>>>>>
>>>>>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> I have a feeling I’m missing a Jar that provides the support or
>>>>>>>>>> could this may be related to
>>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>>>>>> not sure which jar contains it.
>>>>>>>>>>
>>>>>>>>>> Error:
>>>>>>>>>>
>>>>>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>>>              FROM metric
>>>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>>>>>
>>>>>>>>>> Json:
>>>>>>>>>>
>>>>>>>>>> "metric": {
>>>>>>>>>>
>>>>>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>>>>>     "pathElements": [
>>>>>>>>>>     {
>>>>>>>>>>         "node": "State",
>>>>>>>>>>         "value": "PA"
>>>>>>>>>>     },
>>>>>>>>>>     {
>>>>>>>>>>         "node": "City",
>>>>>>>>>>         "value": "Pittsburgh"
>>>>>>>>>>     },
>>>>>>>>>>     {
>>>>>>>>>>         "node": "Street",
>>>>>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>>>>>     },
>>>>>>>>>>     {
>>>>>>>>>>         "node": "level",
>>>>>>>>>>         "value": "main"
>>>>>>>>>>     },
>>>>>>>>>>     {
>>>>>>>>>>         "node": "device",
>>>>>>>>>>         "value": "thermostat"
>>>>>>>>>>     }
>>>>>>>>>>     ],
>>>>>>>>>>     "name": "Current Temperature",
>>>>>>>>>>     "value": 29.590943279257175,
>>>>>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>>>>>   }
>>>>>>>>>>
>>>>>>>>>> Here is the code that produces the error:
>>>>>>>>>>
>>>>>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>>>>>> import org.apache.spark.rdd.RDD
>>>>>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>>>>>> def main(args: Array[String]) {
>>>>>>>>>>     val sc = sparkInit
>>>>>>>>>>
>>>>>>>>>>     @transient
>>>>>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>>>>>
>>>>>>>>>>     import hiveContext._
>>>>>>>>>>
>>>>>>>>>>     val start = System.currentTimeMillis()
>>>>>>>>>>
>>>>>>>>>>     /*
>>>>>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>>>>>      */
>>>>>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>>>>>
>>>>>>>>>>     esData.collect.foreach(println(_))
>>>>>>>>>>
>>>>>>>>>>     val end = System.currentTimeMillis()
>>>>>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>>>>>
>>>>>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>>>>>
>>>>>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>>>>>
>>>>>>>>>>     hiveContext.sql(
>>>>>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>>>              FROM metric
>>>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>>>                as peName, peValue
>>>>>>>>>>         """)
>>>>>>>>>>         .collect.foreach(println(_))
>>>>>>>>>>   }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> More than likely I’m missing a jar, but not sure what that would
>>>>>>>>>> be.
>>>>>>>>>>
>>>>>>>>>> -Todd
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Deepak
>>>
>>>
>>
>
>
> --
> Deepak
>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by .
I think you need to include the jar file through --jars option that
contains the hive definition (code) of UDF json_tuple. That should solve
your problem.

On Fri, Apr 3, 2015 at 3:57 PM, Todd Nist <ts...@gmail.com> wrote:

> I placed it there.  It was downloaded from MySql site.
>
> On Fri, Apr 3, 2015 at 6:25 AM, ÐΞ€ρ@Ҝ (๏̯͡๏) <de...@gmail.com> wrote:
>
>> Akhil
>> you mentioned /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar .
>> how come you got this lib into spark/lib folder.
>> 1) did you place it there ?
>> 2) What is download location ?
>>
>>
>> On Fri, Apr 3, 2015 at 3:42 PM, Todd Nist <ts...@gmail.com> wrote:
>>
>>> Started the spark shell with the one jar from hive suggested:
>>>
>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar
>>>
>>> Results in the same error:
>>>
>>> scala> sql(     |     """SELECT path, name, value, v1.peValue, v1.peName     |          FROM metric_table     |            lateral view json_tuple(pathElements, 'name', 'value') v1     |              as peName, peValue     |     """)
>>> 15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>> 15/04/03 06:01:31 INFO ParseDriver: Parse Completed
>>> res2: org.apache.spark.sql.SchemaRDD =
>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>> java.lang.ClassNotFoundException: json_tuple
>>>
>>> I will try the rebuild.  Thanks again for the assistance.
>>>
>>> -Todd
>>>
>>>
>>> On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>> wrote:
>>>
>>>> Can you try building Spark
>>>> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
>>>> with hive support? Before that try to run the following:
>>>>
>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-
>>>> cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5
>>>> .1.34-bin.jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>>>>
>>>> Thanks
>>>> Best Regards
>>>>
>>>> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>>>>
>>>>> Hi Akhil,
>>>>>
>>>>> This is for version 1.2.1.  Well the other thread that you reference
>>>>> was me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I
>>>>> did not build Spark but used the version from the Spark download site for
>>>>> 1.2.1 Pre Built for Hadoop 2.4 or Later.
>>>>>
>>>>> Since I get the error in both 1.2.1 and 1.3.0,
>>>>>
>>>>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in
>>>>> thread "main" java.lang.ClassNotFoundException: json_tuple at
>>>>> java.net.URLClassLoader$1.run(
>>>>>
>>>>> It looks like I just don't have the jar.  Even including all jars in
>>>>> the $HIVE/lib directory did not seem to work.  Though when looking in
>>>>> $HIVE/lib for 0.13.1, I do not see any json serde or jackson files.  I do
>>>>> see that hive-exec.jar contains
>>>>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>>>>> you know if there is another Jar that is required or should it work just by
>>>>> including all jars from $HIVE/lib?
>>>>>
>>>>> I can build it locally, but did not think that was required based on
>>>>> the version I downloaded; is that not the case?
>>>>>
>>>>> Thanks for the assistance.
>>>>>
>>>>> -Todd
>>>>>
>>>>>
>>>>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>>> wrote:
>>>>>
>>>>>> How did you build spark? which version of spark are you having?
>>>>>> Doesn't this thread already explains it?
>>>>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>>>>
>>>>>> Thanks
>>>>>> Best Regards
>>>>>>
>>>>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Akhil,
>>>>>>>
>>>>>>> Tried your suggestion to no avail.  I actually to not see and
>>>>>>> "jackson" or "json serde" jars in the $HIVE/lib directory.  This is hive
>>>>>>> 0.13.1 and spark 1.2.1
>>>>>>>
>>>>>>> Here is what I did:
>>>>>>>
>>>>>>> I have added the lib folder to the –jars option when starting the
>>>>>>> spark-shell,
>>>>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>>>>> directory.
>>>>>>>
>>>>>>> I start the spark-shell as follows:
>>>>>>>
>>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>>>>
>>>>>>> and like this
>>>>>>>
>>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>>>>
>>>>>>> I’m just doing this in the spark-shell now:
>>>>>>>
>>>>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>>>>     """name": "Memory Usage (%)""",
>>>>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>>>>> rdd1.printSchema()
>>>>>>> rdd1.registerTempTable("metric_table")
>>>>>>> sql(
>>>>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>          FROM metric_table
>>>>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>              as peName, peValue
>>>>>>>     """)
>>>>>>>     .collect.foreach(println(_))
>>>>>>>
>>>>>>> It results in the same error:
>>>>>>>
>>>>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>>>>> java.lang.ClassNotFoundException: json_tuple
>>>>>>>
>>>>>>> Any other suggestions or am I doing something else wrong here?
>>>>>>>
>>>>>>> -Todd
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <
>>>>>>> akhil@sigmoidanalytics.com> wrote:
>>>>>>>
>>>>>>>> Try adding all the jars in your $HIVE/lib directory. If you want
>>>>>>>> the specific jar, you could look fr jackson or json serde in it.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Best Regards
>>>>>>>>
>>>>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I have a feeling I’m missing a Jar that provides the support or
>>>>>>>>> could this may be related to
>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>>>>> not sure which jar contains it.
>>>>>>>>>
>>>>>>>>> Error:
>>>>>>>>>
>>>>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>>              FROM metric
>>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>>>>
>>>>>>>>> Json:
>>>>>>>>>
>>>>>>>>> "metric": {
>>>>>>>>>
>>>>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>>>>     "pathElements": [
>>>>>>>>>     {
>>>>>>>>>         "node": "State",
>>>>>>>>>         "value": "PA"
>>>>>>>>>     },
>>>>>>>>>     {
>>>>>>>>>         "node": "City",
>>>>>>>>>         "value": "Pittsburgh"
>>>>>>>>>     },
>>>>>>>>>     {
>>>>>>>>>         "node": "Street",
>>>>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>>>>     },
>>>>>>>>>     {
>>>>>>>>>         "node": "level",
>>>>>>>>>         "value": "main"
>>>>>>>>>     },
>>>>>>>>>     {
>>>>>>>>>         "node": "device",
>>>>>>>>>         "value": "thermostat"
>>>>>>>>>     }
>>>>>>>>>     ],
>>>>>>>>>     "name": "Current Temperature",
>>>>>>>>>     "value": 29.590943279257175,
>>>>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>>>>   }
>>>>>>>>>
>>>>>>>>> Here is the code that produces the error:
>>>>>>>>>
>>>>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>>>>> import org.apache.spark.rdd.RDD
>>>>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>>>>> def main(args: Array[String]) {
>>>>>>>>>     val sc = sparkInit
>>>>>>>>>
>>>>>>>>>     @transient
>>>>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>>>>
>>>>>>>>>     import hiveContext._
>>>>>>>>>
>>>>>>>>>     val start = System.currentTimeMillis()
>>>>>>>>>
>>>>>>>>>     /*
>>>>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>>>>      */
>>>>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>>>>
>>>>>>>>>     esData.collect.foreach(println(_))
>>>>>>>>>
>>>>>>>>>     val end = System.currentTimeMillis()
>>>>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>>>>
>>>>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>>>>
>>>>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>>>>
>>>>>>>>>     hiveContext.sql(
>>>>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>>              FROM metric
>>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>>                as peName, peValue
>>>>>>>>>         """)
>>>>>>>>>         .collect.foreach(println(_))
>>>>>>>>>   }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> More than likely I’m missing a jar, but not sure what that would
>>>>>>>>> be.
>>>>>>>>>
>>>>>>>>> -Todd
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Deepak
>>
>>
>


-- 
Deepak

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Todd Nist <ts...@gmail.com>.
I placed it there.  It was downloaded from MySql site.

On Fri, Apr 3, 2015 at 6:25 AM, ÐΞ€ρ@Ҝ (๏̯͡๏) <de...@gmail.com> wrote:

> Akhil
> you mentioned /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar .
> how come you got this lib into spark/lib folder.
> 1) did you place it there ?
> 2) What is download location ?
>
>
> On Fri, Apr 3, 2015 at 3:42 PM, Todd Nist <ts...@gmail.com> wrote:
>
>> Started the spark shell with the one jar from hive suggested:
>>
>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar
>>
>> Results in the same error:
>>
>> scala> sql(     |     """SELECT path, name, value, v1.peValue, v1.peName     |          FROM metric_table     |            lateral view json_tuple(pathElements, 'name', 'value') v1     |              as peName, peValue     |     """)
>> 15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>> 15/04/03 06:01:31 INFO ParseDriver: Parse Completed
>> res2: org.apache.spark.sql.SchemaRDD =
>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>> java.lang.ClassNotFoundException: json_tuple
>>
>> I will try the rebuild.  Thanks again for the assistance.
>>
>> -Todd
>>
>>
>> On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
>> wrote:
>>
>>> Can you try building Spark
>>> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
>>> with hive support? Before that try to run the following:
>>>
>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-
>>> cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.
>>> 1.34-bin.jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>>>
>>> Thanks
>>> Best Regards
>>>
>>> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>>>
>>>> Hi Akhil,
>>>>
>>>> This is for version 1.2.1.  Well the other thread that you reference
>>>> was me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I
>>>> did not build Spark but used the version from the Spark download site for
>>>> 1.2.1 Pre Built for Hadoop 2.4 or Later.
>>>>
>>>> Since I get the error in both 1.2.1 and 1.3.0,
>>>>
>>>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in
>>>> thread "main" java.lang.ClassNotFoundException: json_tuple at
>>>> java.net.URLClassLoader$1.run(
>>>>
>>>> It looks like I just don't have the jar.  Even including all jars in
>>>> the $HIVE/lib directory did not seem to work.  Though when looking in
>>>> $HIVE/lib for 0.13.1, I do not see any json serde or jackson files.  I do
>>>> see that hive-exec.jar contains
>>>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>>>> you know if there is another Jar that is required or should it work just by
>>>> including all jars from $HIVE/lib?
>>>>
>>>> I can build it locally, but did not think that was required based on
>>>> the version I downloaded; is that not the case?
>>>>
>>>> Thanks for the assistance.
>>>>
>>>> -Todd
>>>>
>>>>
>>>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>> wrote:
>>>>
>>>>> How did you build spark? which version of spark are you having?
>>>>> Doesn't this thread already explains it?
>>>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>>>
>>>>> Thanks
>>>>> Best Regards
>>>>>
>>>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>>>>>
>>>>>> Hi Akhil,
>>>>>>
>>>>>> Tried your suggestion to no avail.  I actually to not see and
>>>>>> "jackson" or "json serde" jars in the $HIVE/lib directory.  This is hive
>>>>>> 0.13.1 and spark 1.2.1
>>>>>>
>>>>>> Here is what I did:
>>>>>>
>>>>>> I have added the lib folder to the –jars option when starting the
>>>>>> spark-shell,
>>>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>>>> directory.
>>>>>>
>>>>>> I start the spark-shell as follows:
>>>>>>
>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>>>
>>>>>> and like this
>>>>>>
>>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>>>
>>>>>> I’m just doing this in the spark-shell now:
>>>>>>
>>>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>>>     """name": "Memory Usage (%)""",
>>>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>>>> rdd1.printSchema()
>>>>>> rdd1.registerTempTable("metric_table")
>>>>>> sql(
>>>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>          FROM metric_table
>>>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>              as peName, peValue
>>>>>>     """)
>>>>>>     .collect.foreach(println(_))
>>>>>>
>>>>>> It results in the same error:
>>>>>>
>>>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>>>> java.lang.ClassNotFoundException: json_tuple
>>>>>>
>>>>>> Any other suggestions or am I doing something else wrong here?
>>>>>>
>>>>>> -Todd
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <akhil@sigmoidanalytics.com
>>>>>> > wrote:
>>>>>>
>>>>>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>>>>>> specific jar, you could look fr jackson or json serde in it.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Best Regards
>>>>>>>
>>>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I have a feeling I’m missing a Jar that provides the support or
>>>>>>>> could this may be related to
>>>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>>>> not sure which jar contains it.
>>>>>>>>
>>>>>>>> Error:
>>>>>>>>
>>>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>              FROM metric
>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>>>
>>>>>>>> Json:
>>>>>>>>
>>>>>>>> "metric": {
>>>>>>>>
>>>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>>>     "pathElements": [
>>>>>>>>     {
>>>>>>>>         "node": "State",
>>>>>>>>         "value": "PA"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "City",
>>>>>>>>         "value": "Pittsburgh"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "Street",
>>>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "level",
>>>>>>>>         "value": "main"
>>>>>>>>     },
>>>>>>>>     {
>>>>>>>>         "node": "device",
>>>>>>>>         "value": "thermostat"
>>>>>>>>     }
>>>>>>>>     ],
>>>>>>>>     "name": "Current Temperature",
>>>>>>>>     "value": 29.590943279257175,
>>>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>>>   }
>>>>>>>>
>>>>>>>> Here is the code that produces the error:
>>>>>>>>
>>>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>>>> import org.apache.spark.rdd.RDD
>>>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>>>> def main(args: Array[String]) {
>>>>>>>>     val sc = sparkInit
>>>>>>>>
>>>>>>>>     @transient
>>>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>>>
>>>>>>>>     import hiveContext._
>>>>>>>>
>>>>>>>>     val start = System.currentTimeMillis()
>>>>>>>>
>>>>>>>>     /*
>>>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>>>      */
>>>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>>>
>>>>>>>>     esData.collect.foreach(println(_))
>>>>>>>>
>>>>>>>>     val end = System.currentTimeMillis()
>>>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>>>
>>>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>>>
>>>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>>>
>>>>>>>>     hiveContext.sql(
>>>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>>              FROM metric
>>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>>                as peName, peValue
>>>>>>>>         """)
>>>>>>>>         .collect.foreach(println(_))
>>>>>>>>   }
>>>>>>>> }
>>>>>>>>
>>>>>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>>>>>
>>>>>>>> -Todd
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>
> --
> Deepak
>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by .
Akhil
you mentioned /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar .
how come you got this lib into spark/lib folder.
1) did you place it there ?
2) What is download location ?


On Fri, Apr 3, 2015 at 3:42 PM, Todd Nist <ts...@gmail.com> wrote:

> Started the spark shell with the one jar from hive suggested:
>
> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar
>
> Results in the same error:
>
> scala> sql(     |     """SELECT path, name, value, v1.peValue, v1.peName     |          FROM metric_table     |            lateral view json_tuple(pathElements, 'name', 'value') v1     |              as peName, peValue     |     """)
> 15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
> 15/04/03 06:01:31 INFO ParseDriver: Parse Completed
> res2: org.apache.spark.sql.SchemaRDD =
> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
> java.lang.ClassNotFoundException: json_tuple
>
> I will try the rebuild.  Thanks again for the assistance.
>
> -Todd
>
>
> On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
> wrote:
>
>> Can you try building Spark
>> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
>> with hive support? Before that try to run the following:
>>
>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores
>> 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-
>> bin.jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>>
>> Thanks
>> Best Regards
>>
>> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>>
>>> Hi Akhil,
>>>
>>> This is for version 1.2.1.  Well the other thread that you reference was
>>> me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I did
>>> not build Spark but used the version from the Spark download site for 1.2.1
>>> Pre Built for Hadoop 2.4 or Later.
>>>
>>> Since I get the error in both 1.2.1 and 1.3.0,
>>>
>>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in thread
>>> "main" java.lang.ClassNotFoundException: json_tuple at
>>> java.net.URLClassLoader$1.run(
>>>
>>> It looks like I just don't have the jar.  Even including all jars in the
>>> $HIVE/lib directory did not seem to work.  Though when looking in $HIVE/lib
>>> for 0.13.1, I do not see any json serde or jackson files.  I do see that
>>> hive-exec.jar contains
>>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>>> you know if there is another Jar that is required or should it work just by
>>> including all jars from $HIVE/lib?
>>>
>>> I can build it locally, but did not think that was required based on the
>>> version I downloaded; is that not the case?
>>>
>>> Thanks for the assistance.
>>>
>>> -Todd
>>>
>>>
>>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>> wrote:
>>>
>>>> How did you build spark? which version of spark are you having? Doesn't
>>>> this thread already explains it?
>>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>>
>>>> Thanks
>>>> Best Regards
>>>>
>>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>>>>
>>>>> Hi Akhil,
>>>>>
>>>>> Tried your suggestion to no avail.  I actually to not see and
>>>>> "jackson" or "json serde" jars in the $HIVE/lib directory.  This is hive
>>>>> 0.13.1 and spark 1.2.1
>>>>>
>>>>> Here is what I did:
>>>>>
>>>>> I have added the lib folder to the –jars option when starting the
>>>>> spark-shell,
>>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>>> directory.
>>>>>
>>>>> I start the spark-shell as follows:
>>>>>
>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>>
>>>>> and like this
>>>>>
>>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>>
>>>>> I’m just doing this in the spark-shell now:
>>>>>
>>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>>     """name": "Memory Usage (%)""",
>>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>>> rdd1.printSchema()
>>>>> rdd1.registerTempTable("metric_table")
>>>>> sql(
>>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>>          FROM metric_table
>>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>              as peName, peValue
>>>>>     """)
>>>>>     .collect.foreach(println(_))
>>>>>
>>>>> It results in the same error:
>>>>>
>>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>>> java.lang.ClassNotFoundException: json_tuple
>>>>>
>>>>> Any other suggestions or am I doing something else wrong here?
>>>>>
>>>>> -Todd
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>>> wrote:
>>>>>
>>>>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>>>>> specific jar, you could look fr jackson or json serde in it.
>>>>>>
>>>>>> Thanks
>>>>>> Best Regards
>>>>>>
>>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I have a feeling I’m missing a Jar that provides the support or
>>>>>>> could this may be related to
>>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>>> not sure which jar contains it.
>>>>>>>
>>>>>>> Error:
>>>>>>>
>>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>              FROM metric
>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>>
>>>>>>> Json:
>>>>>>>
>>>>>>> "metric": {
>>>>>>>
>>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>>     "pathElements": [
>>>>>>>     {
>>>>>>>         "node": "State",
>>>>>>>         "value": "PA"
>>>>>>>     },
>>>>>>>     {
>>>>>>>         "node": "City",
>>>>>>>         "value": "Pittsburgh"
>>>>>>>     },
>>>>>>>     {
>>>>>>>         "node": "Street",
>>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>>     },
>>>>>>>     {
>>>>>>>         "node": "level",
>>>>>>>         "value": "main"
>>>>>>>     },
>>>>>>>     {
>>>>>>>         "node": "device",
>>>>>>>         "value": "thermostat"
>>>>>>>     }
>>>>>>>     ],
>>>>>>>     "name": "Current Temperature",
>>>>>>>     "value": 29.590943279257175,
>>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>>   }
>>>>>>>
>>>>>>> Here is the code that produces the error:
>>>>>>>
>>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>>> import org.apache.spark.rdd.RDD
>>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>>> def main(args: Array[String]) {
>>>>>>>     val sc = sparkInit
>>>>>>>
>>>>>>>     @transient
>>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>>
>>>>>>>     import hiveContext._
>>>>>>>
>>>>>>>     val start = System.currentTimeMillis()
>>>>>>>
>>>>>>>     /*
>>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>>      */
>>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>>
>>>>>>>     esData.collect.foreach(println(_))
>>>>>>>
>>>>>>>     val end = System.currentTimeMillis()
>>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>>
>>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>>
>>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>>
>>>>>>>     hiveContext.sql(
>>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>>              FROM metric
>>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>>                as peName, peValue
>>>>>>>         """)
>>>>>>>         .collect.foreach(println(_))
>>>>>>>   }
>>>>>>> }
>>>>>>>
>>>>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>>>>
>>>>>>> -Todd
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


-- 
Deepak

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Todd Nist <ts...@gmail.com>.
Started the spark shell with the one jar from hive suggested:

./bin/spark-shell --master spark://radtech.io:7077
--total-executor-cores 2 --driver-class-path
/usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars
/opt/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar

Results in the same error:

scala> sql(     |     """SELECT path, name, value, v1.peValue,
v1.peName     |          FROM metric_table     |            lateral
view json_tuple(pathElements, 'name', 'value') v1     |
as peName, peValue     |     """)
15/04/03 06:01:30 INFO ParseDriver: Parsing command: SELECT path,
name, value, v1.peValue, v1.peName         FROM metric_table
lateral view json_tuple(pathElements, 'name', 'value') v1
as peName, peValue
15/04/03 06:01:31 INFO ParseDriver: Parse Completed
res2: org.apache.spark.sql.SchemaRDD =
SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
java.lang.ClassNotFoundException: json_tuple

I will try the rebuild.  Thanks again for the assistance.

-Todd


On Fri, Apr 3, 2015 at 5:34 AM, Akhil Das <ak...@sigmoidanalytics.com>
wrote:

> Can you try building Spark
> <https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support%23building-with-hive-and-jdbc-support>
> with hive support? Before that try to run the following:
>
> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores
> 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin
> .jar --jars /opt/hive/0.13.1/lib/hive-exec.jar
>
> Thanks
> Best Regards
>
> On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:
>
>> Hi Akhil,
>>
>> This is for version 1.2.1.  Well the other thread that you reference was
>> me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I did
>> not build Spark but used the version from the Spark download site for 1.2.1
>> Pre Built for Hadoop 2.4 or Later.
>>
>> Since I get the error in both 1.2.1 and 1.3.0,
>>
>> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in thread
>> "main" java.lang.ClassNotFoundException: json_tuple at
>> java.net.URLClassLoader$1.run(
>>
>> It looks like I just don't have the jar.  Even including all jars in the
>> $HIVE/lib directory did not seem to work.  Though when looking in $HIVE/lib
>> for 0.13.1, I do not see any json serde or jackson files.  I do see that
>> hive-exec.jar contains
>> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
>> you know if there is another Jar that is required or should it work just by
>> including all jars from $HIVE/lib?
>>
>> I can build it locally, but did not think that was required based on the
>> version I downloaded; is that not the case?
>>
>> Thanks for the assistance.
>>
>> -Todd
>>
>>
>> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
>> wrote:
>>
>>> How did you build spark? which version of spark are you having? Doesn't
>>> this thread already explains it?
>>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>>
>>> Thanks
>>> Best Regards
>>>
>>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>>>
>>>> Hi Akhil,
>>>>
>>>> Tried your suggestion to no avail.  I actually to not see and "jackson"
>>>> or "json serde" jars in the $HIVE/lib directory.  This is hive 0.13.1 and
>>>> spark 1.2.1
>>>>
>>>> Here is what I did:
>>>>
>>>> I have added the lib folder to the –jars option when starting the
>>>> spark-shell,
>>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>>> directory.
>>>>
>>>> I start the spark-shell as follows:
>>>>
>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>>
>>>> and like this
>>>>
>>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>>
>>>> I’m just doing this in the spark-shell now:
>>>>
>>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>>     """name": "Memory Usage (%)""",
>>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>>> rdd1.printSchema()
>>>> rdd1.registerTempTable("metric_table")
>>>> sql(
>>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>>          FROM metric_table
>>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>              as peName, peValue
>>>>     """)
>>>>     .collect.foreach(println(_))
>>>>
>>>> It results in the same error:
>>>>
>>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>>> res2: org.apache.spark.sql.SchemaRDD =
>>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>>> java.lang.ClassNotFoundException: json_tuple
>>>>
>>>> Any other suggestions or am I doing something else wrong here?
>>>>
>>>> -Todd
>>>>
>>>>
>>>>
>>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>>> wrote:
>>>>
>>>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>>>> specific jar, you could look fr jackson or json serde in it.
>>>>>
>>>>> Thanks
>>>>> Best Regards
>>>>>
>>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:
>>>>>
>>>>>> I have a feeling I’m missing a Jar that provides the support or could
>>>>>> this may be related to
>>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>>> not sure which jar contains it.
>>>>>>
>>>>>> Error:
>>>>>>
>>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>>              FROM metric
>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>>     at scala.Option.map(Option.scala:145)
>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>>
>>>>>> Json:
>>>>>>
>>>>>> "metric": {
>>>>>>
>>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>>     "pathElements": [
>>>>>>     {
>>>>>>         "node": "State",
>>>>>>         "value": "PA"
>>>>>>     },
>>>>>>     {
>>>>>>         "node": "City",
>>>>>>         "value": "Pittsburgh"
>>>>>>     },
>>>>>>     {
>>>>>>         "node": "Street",
>>>>>>         "value": "12345 Westbrook Drive"
>>>>>>     },
>>>>>>     {
>>>>>>         "node": "level",
>>>>>>         "value": "main"
>>>>>>     },
>>>>>>     {
>>>>>>         "node": "device",
>>>>>>         "value": "thermostat"
>>>>>>     }
>>>>>>     ],
>>>>>>     "name": "Current Temperature",
>>>>>>     "value": 29.590943279257175,
>>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>>   }
>>>>>>
>>>>>> Here is the code that produces the error:
>>>>>>
>>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>>> import org.apache.spark.rdd.RDD
>>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>>> def main(args: Array[String]) {
>>>>>>     val sc = sparkInit
>>>>>>
>>>>>>     @transient
>>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>>
>>>>>>     import hiveContext._
>>>>>>
>>>>>>     val start = System.currentTimeMillis()
>>>>>>
>>>>>>     /*
>>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>>      */
>>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>>
>>>>>>     esData.collect.foreach(println(_))
>>>>>>
>>>>>>     val end = System.currentTimeMillis()
>>>>>>     println(s"Total time: ${end-start} ms")
>>>>>>
>>>>>>     println("Create Metric Temporary Table for querying")
>>>>>>
>>>>>>     val schemaRDD = hiveContext.sql(
>>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>>
>>>>>>     hiveContext.sql(
>>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>>              FROM metric
>>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>>                as peName, peValue
>>>>>>         """)
>>>>>>         .collect.foreach(println(_))
>>>>>>   }
>>>>>> }
>>>>>>
>>>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>>>
>>>>>> -Todd
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Akhil Das <ak...@sigmoidanalytics.com>.
Can you try building Spark
<https://spark.apache.org/docs/1.2.0/building-spark.html#building-with-hive-and-jdbc-support#building-with-hive-and-jdbc-support>
with hive support? Before that try to run the following:

./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2
--driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
--jars /opt/hive/0.13.1/lib/hive-exec.jar

Thanks
Best Regards

On Fri, Apr 3, 2015 at 2:55 PM, Todd Nist <ts...@gmail.com> wrote:

> Hi Akhil,
>
> This is for version 1.2.1.  Well the other thread that you reference was
> me attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I did
> not build Spark but used the version from the Spark download site for 1.2.1
> Pre Built for Hadoop 2.4 or Later.
>
> Since I get the error in both 1.2.1 and 1.3.0,
>
> 15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in thread
> "main" java.lang.ClassNotFoundException: json_tuple at
> java.net.URLClassLoader$1.run(
>
> It looks like I just don't have the jar.  Even including all jars in the
> $HIVE/lib directory did not seem to work.  Though when looking in $HIVE/lib
> for 0.13.1, I do not see any json serde or jackson files.  I do see that
> hive-exec.jar contains
> the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
> you know if there is another Jar that is required or should it work just by
> including all jars from $HIVE/lib?
>
> I can build it locally, but did not think that was required based on the
> version I downloaded; is that not the case?
>
> Thanks for the assistance.
>
> -Todd
>
>
> On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
> wrote:
>
>> How did you build spark? which version of spark are you having? Doesn't
>> this thread already explains it?
>> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>>
>> Thanks
>> Best Regards
>>
>> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>>
>>> Hi Akhil,
>>>
>>> Tried your suggestion to no avail.  I actually to not see and "jackson"
>>> or "json serde" jars in the $HIVE/lib directory.  This is hive 0.13.1 and
>>> spark 1.2.1
>>>
>>> Here is what I did:
>>>
>>> I have added the lib folder to the –jars option when starting the
>>> spark-shell,
>>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf
>>> directory.
>>>
>>> I start the spark-shell as follows:
>>>
>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>>
>>> and like this
>>>
>>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>>
>>> I’m just doing this in the spark-shell now:
>>>
>>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>>     """name": "Memory Usage (%)""",
>>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>>> rdd1.printSchema()
>>> rdd1.registerTempTable("metric_table")
>>> sql(
>>>     """SELECT path, name, value, v1.peValue, v1.peName
>>>          FROM metric_table
>>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>>              as peName, peValue
>>>     """)
>>>     .collect.foreach(println(_))
>>>
>>> It results in the same error:
>>>
>>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>>> res2: org.apache.spark.sql.SchemaRDD =
>>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>>> java.lang.ClassNotFoundException: json_tuple
>>>
>>> Any other suggestions or am I doing something else wrong here?
>>>
>>> -Todd
>>>
>>>
>>>
>>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
>>> wrote:
>>>
>>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>>> specific jar, you could look fr jackson or json serde in it.
>>>>
>>>> Thanks
>>>> Best Regards
>>>>
>>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:
>>>>
>>>>> I have a feeling I’m missing a Jar that provides the support or could
>>>>> this may be related to
>>>>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar
>>>>> where would I find that ? I would have thought in the $HIVE/lib folder, but
>>>>> not sure which jar contains it.
>>>>>
>>>>> Error:
>>>>>
>>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>>              FROM metric
>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>>     at scala.Option.map(Option.scala:145)
>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>>
>>>>> Json:
>>>>>
>>>>> "metric": {
>>>>>
>>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>>     "pathElements": [
>>>>>     {
>>>>>         "node": "State",
>>>>>         "value": "PA"
>>>>>     },
>>>>>     {
>>>>>         "node": "City",
>>>>>         "value": "Pittsburgh"
>>>>>     },
>>>>>     {
>>>>>         "node": "Street",
>>>>>         "value": "12345 Westbrook Drive"
>>>>>     },
>>>>>     {
>>>>>         "node": "level",
>>>>>         "value": "main"
>>>>>     },
>>>>>     {
>>>>>         "node": "device",
>>>>>         "value": "thermostat"
>>>>>     }
>>>>>     ],
>>>>>     "name": "Current Temperature",
>>>>>     "value": 29.590943279257175,
>>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>>   }
>>>>>
>>>>> Here is the code that produces the error:
>>>>>
>>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>>> import org.apache.spark.rdd.RDD
>>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>>> def main(args: Array[String]) {
>>>>>     val sc = sparkInit
>>>>>
>>>>>     @transient
>>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>>
>>>>>     import hiveContext._
>>>>>
>>>>>     val start = System.currentTimeMillis()
>>>>>
>>>>>     /*
>>>>>      * Read from ES and provide some insights with SparkSQL
>>>>>      */
>>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>>
>>>>>     esData.collect.foreach(println(_))
>>>>>
>>>>>     val end = System.currentTimeMillis()
>>>>>     println(s"Total time: ${end-start} ms")
>>>>>
>>>>>     println("Create Metric Temporary Table for querying")
>>>>>
>>>>>     val schemaRDD = hiveContext.sql(
>>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>>           "USING org.elasticsearch.spark.sql " +
>>>>>           "OPTIONS (resource 'device/metric')" )
>>>>>
>>>>>     hiveContext.sql(
>>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>>              FROM metric
>>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>>                as peName, peValue
>>>>>         """)
>>>>>         .collect.foreach(println(_))
>>>>>   }
>>>>> }
>>>>>
>>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>>
>>>>> -Todd
>>>>>
>>>>
>>>>
>>>
>>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Todd Nist <ts...@gmail.com>.
Hi Akhil,

This is for version 1.2.1.  Well the other thread that you reference was me
attempting it in 1.3.0 to see if the issue was related to 1.2.1.  I did not
build Spark but used the version from the Spark download site for 1.2.1 Pre
Built for Hadoop 2.4 or Later.

Since I get the error in both 1.2.1 and 1.3.0,

15/04/01 14:41:49 INFO ParseDriver: Parse Completed Exception in thread
"main" java.lang.ClassNotFoundException: json_tuple at
java.net.URLClassLoader$1.run(

It looks like I just don't have the jar.  Even including all jars in the
$HIVE/lib directory did not seem to work.  Though when looking in $HIVE/lib
for 0.13.1, I do not see any json serde or jackson files.  I do see that
hive-exec.jar contains
the org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple class.  Do
you know if there is another Jar that is required or should it work just by
including all jars from $HIVE/lib?

I can build it locally, but did not think that was required based on the
version I downloaded; is that not the case?

Thanks for the assistance.

-Todd


On Fri, Apr 3, 2015 at 2:06 AM, Akhil Das <ak...@sigmoidanalytics.com>
wrote:

> How did you build spark? which version of spark are you having? Doesn't
> this thread already explains it?
> https://www.mail-archive.com/user@spark.apache.org/msg25505.html
>
> Thanks
> Best Regards
>
> On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:
>
>> Hi Akhil,
>>
>> Tried your suggestion to no avail.  I actually to not see and "jackson"
>> or "json serde" jars in the $HIVE/lib directory.  This is hive 0.13.1 and
>> spark 1.2.1
>>
>> Here is what I did:
>>
>> I have added the lib folder to the –jars option when starting the
>> spark-shell,
>> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf directory.
>>
>> I start the spark-shell as follows:
>>
>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>>
>> and like this
>>
>> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>>
>> I’m just doing this in the spark-shell now:
>>
>> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>>     """name": "Memory Usage (%)""",
>>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
>> rdd1.printSchema()
>> rdd1.registerTempTable("metric_table")
>> sql(
>>     """SELECT path, name, value, v1.peValue, v1.peName
>>          FROM metric_table
>>            lateral view json_tuple(pathElements, 'name', 'value') v1
>>              as peName, peValue
>>     """)
>>     .collect.foreach(println(_))
>>
>> It results in the same error:
>>
>> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
>> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
>> res2: org.apache.spark.sql.SchemaRDD =
>> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
>> java.lang.ClassNotFoundException: json_tuple
>>
>> Any other suggestions or am I doing something else wrong here?
>>
>> -Todd
>>
>>
>>
>> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
>> wrote:
>>
>>> Try adding all the jars in your $HIVE/lib directory. If you want the
>>> specific jar, you could look fr jackson or json serde in it.
>>>
>>> Thanks
>>> Best Regards
>>>
>>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:
>>>
>>>> I have a feeling I’m missing a Jar that provides the support or could
>>>> this may be related to https://issues.apache.org/jira/browse/SPARK-5792.
>>>> If it is a Jar where would I find that ? I would have thought in the
>>>> $HIVE/lib folder, but not sure which jar contains it.
>>>>
>>>> Error:
>>>>
>>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>>              FROM metric
>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>>     at scala.Option.map(Option.scala:145)
>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>>
>>>> Json:
>>>>
>>>> "metric": {
>>>>
>>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>>     "pathElements": [
>>>>     {
>>>>         "node": "State",
>>>>         "value": "PA"
>>>>     },
>>>>     {
>>>>         "node": "City",
>>>>         "value": "Pittsburgh"
>>>>     },
>>>>     {
>>>>         "node": "Street",
>>>>         "value": "12345 Westbrook Drive"
>>>>     },
>>>>     {
>>>>         "node": "level",
>>>>         "value": "main"
>>>>     },
>>>>     {
>>>>         "node": "device",
>>>>         "value": "thermostat"
>>>>     }
>>>>     ],
>>>>     "name": "Current Temperature",
>>>>     "value": 29.590943279257175,
>>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>>   }
>>>>
>>>> Here is the code that produces the error:
>>>>
>>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>>> import org.apache.spark.rdd.RDD
>>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>>> def main(args: Array[String]) {
>>>>     val sc = sparkInit
>>>>
>>>>     @transient
>>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>>
>>>>     import hiveContext._
>>>>
>>>>     val start = System.currentTimeMillis()
>>>>
>>>>     /*
>>>>      * Read from ES and provide some insights with SparkSQL
>>>>      */
>>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>>
>>>>     esData.collect.foreach(println(_))
>>>>
>>>>     val end = System.currentTimeMillis()
>>>>     println(s"Total time: ${end-start} ms")
>>>>
>>>>     println("Create Metric Temporary Table for querying")
>>>>
>>>>     val schemaRDD = hiveContext.sql(
>>>>           "CREATE TEMPORARY TABLE metric     " +
>>>>           "USING org.elasticsearch.spark.sql " +
>>>>           "OPTIONS (resource 'device/metric')" )
>>>>
>>>>     hiveContext.sql(
>>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>>              FROM metric
>>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>>                as peName, peValue
>>>>         """)
>>>>         .collect.foreach(println(_))
>>>>   }
>>>> }
>>>>
>>>> More than likely I’m missing a jar, but not sure what that would be.
>>>>
>>>> -Todd
>>>>
>>>
>>>
>>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Akhil Das <ak...@sigmoidanalytics.com>.
How did you build spark? which version of spark are you having? Doesn't
this thread already explains it?
https://www.mail-archive.com/user@spark.apache.org/msg25505.html

Thanks
Best Regards

On Thu, Apr 2, 2015 at 11:10 PM, Todd Nist <ts...@gmail.com> wrote:

> Hi Akhil,
>
> Tried your suggestion to no avail.  I actually to not see and "jackson" or
> "json serde" jars in the $HIVE/lib directory.  This is hive 0.13.1 and
> spark 1.2.1
>
> Here is what I did:
>
> I have added the lib folder to the –jars option when starting the
> spark-shell,
> but the job fails. The hive-site.xml is in the $SPARK_HOME/conf directory.
>
> I start the spark-shell as follows:
>
> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar
>
> and like this
>
> ./bin/spark-shell --master spark://radtech.io:7077 --total-executor-cores 2 --driver-class-path /usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars /opt/hive/0.13.1/lib/*
>
> I’m just doing this in the spark-shell now:
>
> import org.apache.spark.sql.hive._val sqlContext = new HiveContext(sc)import sqlContext._case class MetricTable(path: String, pathElements: String, name: String, value: String)val mt = new MetricTable("""path": "/DC1/HOST1/""",
>     """pathElements": [{"node": "DataCenter","value": "DC1"},{"node": "host","value": "HOST1"}]""",
>     """name": "Memory Usage (%)""",
>     """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
> rdd1.printSchema()
> rdd1.registerTempTable("metric_table")
> sql(
>     """SELECT path, name, value, v1.peValue, v1.peName
>          FROM metric_table
>            lateral view json_tuple(pathElements, 'name', 'value') v1
>              as peName, peValue
>     """)
>     .collect.foreach(println(_))
>
> It results in the same error:
>
> 15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName         FROM metric_table           lateral view json_tuple(pathElements, 'name', 'value') v1             as peName, peValue
> 15/04/02 12:34:00 INFO ParseDriver: Parse Completed
> res2: org.apache.spark.sql.SchemaRDD =
> SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
> java.lang.ClassNotFoundException: json_tuple
>
> Any other suggestions or am I doing something else wrong here?
>
> -Todd
>
>
>
> On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
> wrote:
>
>> Try adding all the jars in your $HIVE/lib directory. If you want the
>> specific jar, you could look fr jackson or json serde in it.
>>
>> Thanks
>> Best Regards
>>
>> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:
>>
>>> I have a feeling I’m missing a Jar that provides the support or could
>>> this may be related to https://issues.apache.org/jira/browse/SPARK-5792.
>>> If it is a Jar where would I find that ? I would have thought in the
>>> $HIVE/lib folder, but not sure which jar contains it.
>>>
>>> Error:
>>>
>>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>>              FROM metric
>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>>     at java.security.AccessController.doPrivileged(Native Method)
>>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>>     at scala.Option.map(Option.scala:145)
>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>>
>>> Json:
>>>
>>> "metric": {
>>>
>>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>>     "pathElements": [
>>>     {
>>>         "node": "State",
>>>         "value": "PA"
>>>     },
>>>     {
>>>         "node": "City",
>>>         "value": "Pittsburgh"
>>>     },
>>>     {
>>>         "node": "Street",
>>>         "value": "12345 Westbrook Drive"
>>>     },
>>>     {
>>>         "node": "level",
>>>         "value": "main"
>>>     },
>>>     {
>>>         "node": "device",
>>>         "value": "thermostat"
>>>     }
>>>     ],
>>>     "name": "Current Temperature",
>>>     "value": 29.590943279257175,
>>>     "timestamp": "2015-03-27T14:53:46+0000"
>>>   }
>>>
>>> Here is the code that produces the error:
>>>
>>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>>> import org.apache.spark.rdd.RDD
>>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>>> def main(args: Array[String]) {
>>>     val sc = sparkInit
>>>
>>>     @transient
>>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>>
>>>     import hiveContext._
>>>
>>>     val start = System.currentTimeMillis()
>>>
>>>     /*
>>>      * Read from ES and provide some insights with SparkSQL
>>>      */
>>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>>
>>>     esData.collect.foreach(println(_))
>>>
>>>     val end = System.currentTimeMillis()
>>>     println(s"Total time: ${end-start} ms")
>>>
>>>     println("Create Metric Temporary Table for querying")
>>>
>>>     val schemaRDD = hiveContext.sql(
>>>           "CREATE TEMPORARY TABLE metric     " +
>>>           "USING org.elasticsearch.spark.sql " +
>>>           "OPTIONS (resource 'device/metric')" )
>>>
>>>     hiveContext.sql(
>>>         """SELECT path, name, value, v1.peValue, v1.peName
>>>              FROM metric
>>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>>                as peName, peValue
>>>         """)
>>>         .collect.foreach(println(_))
>>>   }
>>> }
>>>
>>> More than likely I’m missing a jar, but not sure what that would be.
>>>
>>> -Todd
>>>
>>
>>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Todd Nist <ts...@gmail.com>.
Hi Akhil,

Tried your suggestion to no avail.  I actually to not see and "jackson" or
"json serde" jars in the $HIVE/lib directory.  This is hive 0.13.1 and
spark 1.2.1

Here is what I did:

I have added the lib folder to the –jars option when starting the
spark-shell,
but the job fails. The hive-site.xml is in the $SPARK_HOME/conf directory.

I start the spark-shell as follows:

./bin/spark-shell --master spark://radtech.io:7077
--total-executor-cores 2 --driver-class-path
/usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar

and like this

./bin/spark-shell --master spark://radtech.io:7077
--total-executor-cores 2 --driver-class-path
/usr/local/spark/lib/mysql-connector-java-5.1.34-bin.jar --jars
/opt/hive/0.13.1/lib/*

I’m just doing this in the spark-shell now:

import org.apache.spark.sql.hive._val sqlContext = new
HiveContext(sc)import sqlContext._case class MetricTable(path: String,
pathElements: String, name: String, value: String)val mt = new
MetricTable("""path": "/DC1/HOST1/""",
    """pathElements": [{"node": "DataCenter","value": "DC1"},{"node":
"host","value": "HOST1"}]""",
    """name": "Memory Usage (%)""",
    """value": 29.590943279257175""")val rdd1 = sc.makeRDD(List(mt))
rdd1.printSchema()
rdd1.registerTempTable("metric_table")
sql(
    """SELECT path, name, value, v1.peValue, v1.peName
         FROM metric_table
           lateral view json_tuple(pathElements, 'name', 'value') v1
             as peName, peValue
    """)
    .collect.foreach(println(_))

It results in the same error:

15/04/02 12:33:59 INFO ParseDriver: Parsing command: SELECT path,
name, value, v1.peValue, v1.peName         FROM metric_table
lateral view json_tuple(pathElements, 'name', 'value') v1
as peName, peValue
15/04/02 12:34:00 INFO ParseDriver: Parse Completed
res2: org.apache.spark.sql.SchemaRDD =
SchemaRDD[5] at RDD at SchemaRDD.scala:108== Query Plan ==== Physical Plan ==
java.lang.ClassNotFoundException: json_tuple

Any other suggestions or am I doing something else wrong here?

-Todd



On Thu, Apr 2, 2015 at 2:00 AM, Akhil Das <ak...@sigmoidanalytics.com>
wrote:

> Try adding all the jars in your $HIVE/lib directory. If you want the
> specific jar, you could look fr jackson or json serde in it.
>
> Thanks
> Best Regards
>
> On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:
>
>> I have a feeling I’m missing a Jar that provides the support or could
>> this may be related to https://issues.apache.org/jira/browse/SPARK-5792.
>> If it is a Jar where would I find that ? I would have thought in the
>> $HIVE/lib folder, but not sure which jar contains it.
>>
>> Error:
>>
>> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>>              FROM metric
>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>     at java.security.AccessController.doPrivileged(Native Method)
>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>     at scala.Option.map(Option.scala:145)
>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>     at scala.collection.immutable.List.foreach(List.scala:318)
>>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>     at java.lang.reflect.Method.invoke(Method.java:483)
>>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>
>> Json:
>>
>> "metric": {
>>
>>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>     "pathElements": [
>>     {
>>         "node": "State",
>>         "value": "PA"
>>     },
>>     {
>>         "node": "City",
>>         "value": "Pittsburgh"
>>     },
>>     {
>>         "node": "Street",
>>         "value": "12345 Westbrook Drive"
>>     },
>>     {
>>         "node": "level",
>>         "value": "main"
>>     },
>>     {
>>         "node": "device",
>>         "value": "thermostat"
>>     }
>>     ],
>>     "name": "Current Temperature",
>>     "value": 29.590943279257175,
>>     "timestamp": "2015-03-27T14:53:46+0000"
>>   }
>>
>> Here is the code that produces the error:
>>
>> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
>> import org.apache.spark.rdd.RDD
>> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
>> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
>> def main(args: Array[String]) {
>>     val sc = sparkInit
>>
>>     @transient
>>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>>
>>     import hiveContext._
>>
>>     val start = System.currentTimeMillis()
>>
>>     /*
>>      * Read from ES and provide some insights with SparkSQL
>>      */
>>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>
>>     esData.collect.foreach(println(_))
>>
>>     val end = System.currentTimeMillis()
>>     println(s"Total time: ${end-start} ms")
>>
>>     println("Create Metric Temporary Table for querying")
>>
>>     val schemaRDD = hiveContext.sql(
>>           "CREATE TEMPORARY TABLE metric     " +
>>           "USING org.elasticsearch.spark.sql " +
>>           "OPTIONS (resource 'device/metric')" )
>>
>>     hiveContext.sql(
>>         """SELECT path, name, value, v1.peValue, v1.peName
>>              FROM metric
>>              lateral view json_tuple(pathElements, 'name', 'value') v1
>>                as peName, peValue
>>         """)
>>         .collect.foreach(println(_))
>>   }
>> }
>>
>> More than likely I’m missing a jar, but not sure what that would be.
>>
>> -Todd
>>
>
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Akhil Das <ak...@sigmoidanalytics.com>.
Try adding all the jars in your $HIVE/lib directory. If you want the
specific jar, you could look fr jackson or json serde in it.

Thanks
Best Regards

On Thu, Apr 2, 2015 at 12:49 AM, Todd Nist <ts...@gmail.com> wrote:

> I have a feeling I’m missing a Jar that provides the support or could this
> may be related to https://issues.apache.org/jira/browse/SPARK-5792. If it
> is a Jar where would I find that ? I would have thought in the $HIVE/lib
> folder, but not sure which jar contains it.
>
> Error:
>
> Create Metric Temporary Table for querying15/04/01 14:41:44 INFO HiveMetaStore: 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore15/04/01 14:41:44 INFO ObjectStore: ObjectStore, initialize called15/04/01 14:41:45 INFO Persistence: Property hive.metastore.integral.jdo.pushdown unknown - will be ignored15/04/01 14:41:45 INFO Persistence: Property datanucleus.cache.level2 unknown - will be ignored15/04/01 14:41:45 INFO BlockManager: Removing broadcast 015/04/01 14:41:45 INFO BlockManager: Removing block broadcast_015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0 of size 1272 dropped from memory (free 278018571)15/04/01 14:41:45 INFO BlockManager: Removing block broadcast_0_piece015/04/01 14:41:45 INFO MemoryStore: Block broadcast_0_piece0 of size 869 dropped from memory (free 278019440)15/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63230 in memory (size: 869.0 B, free: 265.1 MB)15/04/01 14:41:45 INFO BlockManagerMaster: Updated info of block broadcast_0_piece015/04/01 14:41:45 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.1.5:63278 in memory (size: 869.0 B, free: 530.0 MB)15/04/01 14:41:45 INFO ContextCleaner: Cleaned broadcast 015/04/01 14:41:46 INFO ObjectStore: Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:46 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Datastore: The class "org.apache.hadoop.hive.metastore.model.MOrder" is tagged as "embedded-only" so does not have its own datastore table.15/04/01 14:41:47 INFO Query: Reading in results for query "org.datanucleus.store.rdbms.query.SQLQuery@0" since the connection used is closing15/04/01 14:41:47 INFO ObjectStore: Initialized ObjectStore15/04/01 14:41:47 INFO HiveMetaStore: Added admin role in metastore15/04/01 14:41:47 INFO HiveMetaStore: Added public role in metastore15/04/01 14:41:48 INFO HiveMetaStore: No user is added in admin role, since config is empty15/04/01 14:41:48 INFO SessionState: No Tez session required at this point. hive.execution.engine=mr.15/04/01 14:41:49 INFO ParseDriver: Parsing command: SELECT path, name, value, v1.peValue, v1.peName
>              FROM metric
>              lateral view json_tuple(pathElements, 'name', 'value') v1
>                as peName, peValue15/04/01 14:41:49 INFO ParseDriver: Parse CompletedException in thread "main" java.lang.ClassNotFoundException: json_tuple
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>     at org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>     at org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>     at org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>     at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
> 	at org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>     at scala.Option.map(Option.scala:145)
>     at org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>     at org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
> 	at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
> 	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>     at scala.collection.immutable.List.foreach(List.scala:318)
>     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>     at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>     at org.apache.spark.sql.catalyst.plans.QueryPlan.org$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
> 	at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
> 	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>     at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>     at org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
> 	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>     at scala.collection.Iterator$class.foreach(Iterator.scala:727)
>     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>     at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>     at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>     at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>     at scala.collection.AbstractIterator.to(Iterator.scala:1157)
>     at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>     at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>     at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>     at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>     at org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>     at org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>     at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>     at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>     at scala.collection.immutable.List.foldLeft(List.scala:84)
>     at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
> 	at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>     at scala.collection.immutable.List.foreach(List.scala:318)
>     at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>     at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>     at org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>     at org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>     at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>     at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>     at org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>     at com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:483)
>     at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>
> Json:
>
> "metric": {
>
>     "path": "/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>     "pathElements": [
>     {
>         "node": "State",
>         "value": "PA"
>     },
>     {
>         "node": "City",
>         "value": "Pittsburgh"
>     },
>     {
>         "node": "Street",
>         "value": "12345 Westbrook Drive"
>     },
>     {
>         "node": "level",
>         "value": "main"
>     },
>     {
>         "node": "device",
>         "value": "thermostat"
>     }
>     ],
>     "name": "Current Temperature",
>     "value": 29.590943279257175,
>     "timestamp": "2015-03-27T14:53:46+0000"
>   }
>
> Here is the code that produces the error:
>
> // Spark importsimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._
> import org.apache.spark.rdd.RDD
> import org.apache.spark.sql.{SchemaRDD,SQLContext}import org.apache.spark.sql.hive._
> // ES importsimport org.elasticsearch.spark._import org.elasticsearch.spark.sql._
> def main(args: Array[String]) {
>     val sc = sparkInit
>
>     @transient
>     val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
>
>     import hiveContext._
>
>     val start = System.currentTimeMillis()
>
>     /*
>      * Read from ES and provide some insights with SparkSQL
>      */
>     val esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>
>     esData.collect.foreach(println(_))
>
>     val end = System.currentTimeMillis()
>     println(s"Total time: ${end-start} ms")
>
>     println("Create Metric Temporary Table for querying")
>
>     val schemaRDD = hiveContext.sql(
>           "CREATE TEMPORARY TABLE metric     " +
>           "USING org.elasticsearch.spark.sql " +
>           "OPTIONS (resource 'device/metric')" )
>
>     hiveContext.sql(
>         """SELECT path, name, value, v1.peValue, v1.peName
>              FROM metric
>              lateral view json_tuple(pathElements, 'name', 'value') v1
>                as peName, peValue
>         """)
>         .collect.foreach(println(_))
>   }
> }
>
> More than likely I’m missing a jar, but not sure what that would be.
>
> -Todd
>

Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Cheng Lian <li...@gmail.com>.
Filed https://issues.apache.org/jira/browse/SPARK-6708 to track this.

Cheng

On 4/4/15 10:21 PM, Cheng Lian wrote:
> I think this is a bug of Spark SQL dates back to at least 1.1.0.
>
> The json_tuple function is implemented as 
> org.apache.hadoop.hive.ql.udf.generic.GenericUDTFJSONTuple. The 
> ClassNotFoundException should complain with the class name rather than 
> the UDTF function name.
>
> The problematic line should be this one 
> <https://github.com/apache/spark/blob/9b40c17ab161b64933539abeefde443cb4f98673/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala#L1288>. 
> HiveFunctionWrapper expects the full qualified class name of the UDTF 
> class that implements the function, but we pass in the function name.
>
> Thanks for reporting this!
>
> Cheng
>
> On 4/2/15 3:19 AM, Todd Nist wrote:
>>
>> I have a feeling I’m missing a Jar that provides the support or could 
>> this may be related to 
>> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar 
>> where would I find that ? I would have thought in the $HIVE/lib 
>> folder, but not sure which jar contains it.
>>
>> Error:
>>
>> |Create  MetricTemporary  Table  for  querying
>> 15/04/01  14:41:44  INFO HiveMetaStore:0: Opening raw storewith  implemenation class:org.apache.hadoop.hive.metastore.ObjectStore
>> 15/04/01  14:41:44  INFO ObjectStore: ObjectStore, initialize called
>> 15/04/01  14:41:45  INFO Persistence: Property hive.metastore.integral.jdo.pushdownunknown  - will be ignored
>> 15/04/01  14:41:45  INFO Persistence: Property datanucleus.cache.level2unknown  - will be ignored
>> 15/04/01  14:41:45  INFO BlockManager: Removing broadcast0
>> 15/04/01  14:41:45  INFO BlockManager: Removing block broadcast_0
>> 15/04/01  14:41:45  INFO MemoryStore: Block broadcast_0of  size  1272  droppedfrom  memory (free278018571)
>> 15/04/01  14:41:45  INFO BlockManager: Removing block broadcast_0_piece0
>> 15/04/01  14:41:45  INFO MemoryStore: Block broadcast_0_piece0of  size  869  droppedfrom  memory (free278019440)
>> 15/04/01  14:41:45  INFO BlockManagerInfo: Removed broadcast_0_piece0on  192.168.1.5:63230  in  memory (size:869.0  B, free:265.1  MB)
>> 15/04/01  14:41:45  INFO BlockManagerMaster: Updated infoof  block broadcast_0_piece0
>> 15/04/01  14:41:45  INFO BlockManagerInfo: Removed broadcast_0_piece0on  192.168.1.5:63278  in  memory (size:869.0  B, free:530.0  MB)
>> 15/04/01  14:41:45  INFO ContextCleaner: Cleaned broadcast0
>> 15/04/01  14:41:46  INFO ObjectStore: Setting MetaStore object pin classeswith  hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"
>> 15/04/01  14:41:46  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MFieldSchema"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
>> 15/04/01  14:41:46  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MOrder"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
>> 15/04/01  14:41:47  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MFieldSchema"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
>> 15/04/01  14:41:47  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MOrder"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
>> 15/04/01  14:41:47  INFO Query: Readingin  resultsfor  query"org.datanucleus.store.rdbms.query.SQLQuery@0"  since theconnection  usedis  closing
>> 15/04/01  14:41:47  INFO ObjectStore: Initialized ObjectStore
>> 15/04/01  14:41:47  INFO HiveMetaStore: Added admin rolein  metastore
>> 15/04/01  14:41:47  INFO HiveMetaStore: Addedpublic  rolein  metastore
>> 15/04/01  14:41:48  INFO HiveMetaStore:No  user  is  addedin  admin role, since configis  empty
>> 15/04/01  14:41:48  INFO SessionState:No  Tezsession  requiredat  this point. hive.execution.engine=mr.
>> 15/04/01  14:41:49  INFO ParseDriver: Parsing command:SELECT  path, name,value, v1.peValue, v1.peName
>>               FROM  metric
>>               lateralview  json_tuple(pathElements,'name','value') v1
>>                 as  peName, peValue
>> 15/04/01  14:41:49  INFO ParseDriver: Parse Completed
>> Exception  in  thread"main"  java.lang.ClassNotFoundException: json_tuple
>>      at  java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>>      at  java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>      at  java.security.AccessController.doPrivileged(Native Method)
>>      at  java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>>      at  java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>      at  java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>      at  org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>>      at  org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>>      at  org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>>      at  org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>> 	at  org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>>      at  scala.Option.map(Option.scala:145)
>>      at  org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>>      at  org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>>      at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>> 	at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>>      at  scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>> 	at  scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>>      at  scala.collection.immutable.List.foreach(List.scala:318)
>>      at  scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>>      at  scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>>      at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>>      at  org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.org  <http://catalyst.plans.QueryPlan.org>$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
>> 	at  org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>>      at  scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>> 	at  scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>>      at  scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>      at  scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>      at  scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>>      at  scala.collection.AbstractTraversable.map(Traversable.scala:105)
>>      at  org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
>> 	at  scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>>      at  scala.collection.Iterator$class.foreach(Iterator.scala:727)
>>      at  scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>>      at  scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>>      at  scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>>      at  scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>>      at  scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>>      at  scala.collection.AbstractIterator.to(Iterator.scala:1157)
>>      at  scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>>      at  scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>>      at  scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>>      at  scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>>      at  org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>>      at  scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>>      at  scala.collection.immutable.List.foldLeft(List.scala:84)
>>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
>> 	at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>>      at  scala.collection.immutable.List.foreach(List.scala:318)
>>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>>      at  org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>>      at  org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>>      at  com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>>      at  com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>>      at  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>      at  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>      at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      at  java.lang.reflect.Method.invoke(Method.java:483)
>>      at  org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>>      at  org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>>      at  org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)|
>>
>> Json:
>>
>> |"metric": {
>>
>>      "path":"/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>>      "pathElements": [
>>      {
>>          "node":"State",
>>          "value":"PA"
>>      },
>>      {
>>          "node":"City",
>>          "value":"Pittsburgh"
>>      },
>>      {
>>          "node":"Street",
>>          "value":"12345 Westbrook Drive"
>>      },
>>      {
>>          "node":"level",
>>          "value":"main"
>>      },
>>      {
>>          "node":"device",
>>          "value":"thermostat"
>>      }
>>      ],
>>      "name":"Current Temperature",
>>      "value":29.590943279257175,
>>      "timestamp":"2015-03-27T14:53:46+0000"
>>    }|
>>
>> Here is the code that produces the error:
>>
>> |// Spark imports
>> import  org.apache.spark.{SparkConf, SparkContext}
>> import  org.apache.spark.SparkContext._
>>
>> import  org.apache.spark.rdd.RDD
>>
>> import  org.apache.spark.sql.{SchemaRDD,SQLContext}
>> import  org.apache.spark.sql.hive._
>>
>> // ES imports
>> import  org.elasticsearch.spark._
>> import  org.elasticsearch.spark.sql._
>>
>> def  main(args: Array[String]) {
>>      val  sc = sparkInit
>>
>>      @transient
>>      val  hiveContext =new  org.apache.spark.sql.hive.HiveContext(sc)
>>
>>      import  hiveContext._
>>
>>      val  start = System.currentTimeMillis()
>>
>>      /*
>>       * Read from ES and provide some insights with SparkSQL
>>       */
>>      val  esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>>
>>      esData.collect.foreach(println(_))
>>
>>      val  end = System.currentTimeMillis()
>>      println(s"Total time: ${end-start} ms")
>>
>>      println("Create Metric Temporary Table for querying")
>>
>>      val  schemaRDD = hiveContext.sql(
>>            "CREATE TEMPORARY TABLE metric"  +
>>            "USING org.elasticsearch.spark.sql"  +
>>            "OPTIONS (resource 'device/metric')"  )
>>
>>      hiveContext.sql(
>>          """SELECT path, name, value, v1.peValue, v1.peName
>>               FROM metric
>>               lateral view json_tuple(pathElements, 'name', 'value') v1
>>                 as peName, peValue
>>          """)
>>          .collect.foreach(println(_))
>>    }
>> }|
>>
>> More than likely I’m missing a jar, but not sure what that would be.
>>
>> -Todd
>>
>


Re: Spark Sql - Missing Jar ? json_tuple NoClassDefFoundError

Posted by Cheng Lian <li...@gmail.com>.
I think this is a bug of Spark SQL dates back to at least 1.1.0.

The json_tuple function is implemented as 
org.apache.hadoop.hive.ql.udf.generic.GenericUDTFJSONTuple. The 
ClassNotFoundException should complain with the class name rather than 
the UDTF function name.

The problematic line should be this one 
<https://github.com/apache/spark/blob/9b40c17ab161b64933539abeefde443cb4f98673/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala#L1288>. 
HiveFunctionWrapper expects the full qualified class name of the UDTF 
class that implements the function, but we pass in the function name.

Thanks for reporting this!

Cheng

On 4/2/15 3:19 AM, Todd Nist wrote:
>
> I have a feeling I’m missing a Jar that provides the support or could 
> this may be related to 
> https://issues.apache.org/jira/browse/SPARK-5792. If it is a Jar where 
> would I find that ? I would have thought in the $HIVE/lib folder, but 
> not sure which jar contains it.
>
> Error:
>
> |Create  MetricTemporary  Table  for  querying
> 15/04/01  14:41:44  INFO HiveMetaStore:0: Opening raw storewith  implemenation class:org.apache.hadoop.hive.metastore.ObjectStore
> 15/04/01  14:41:44  INFO ObjectStore: ObjectStore, initialize called
> 15/04/01  14:41:45  INFO Persistence: Property hive.metastore.integral.jdo.pushdownunknown  - will be ignored
> 15/04/01  14:41:45  INFO Persistence: Property datanucleus.cache.level2unknown  - will be ignored
> 15/04/01  14:41:45  INFO BlockManager: Removing broadcast0
> 15/04/01  14:41:45  INFO BlockManager: Removing block broadcast_0
> 15/04/01  14:41:45  INFO MemoryStore: Block broadcast_0of  size  1272  droppedfrom  memory (free278018571)
> 15/04/01  14:41:45  INFO BlockManager: Removing block broadcast_0_piece0
> 15/04/01  14:41:45  INFO MemoryStore: Block broadcast_0_piece0of  size  869  droppedfrom  memory (free278019440)
> 15/04/01  14:41:45  INFO BlockManagerInfo: Removed broadcast_0_piece0on  192.168.1.5:63230  in  memory (size:869.0  B, free:265.1  MB)
> 15/04/01  14:41:45  INFO BlockManagerMaster: Updated infoof  block broadcast_0_piece0
> 15/04/01  14:41:45  INFO BlockManagerInfo: Removed broadcast_0_piece0on  192.168.1.5:63278  in  memory (size:869.0  B, free:530.0  MB)
> 15/04/01  14:41:45  INFO ContextCleaner: Cleaned broadcast0
> 15/04/01  14:41:46  INFO ObjectStore: Setting MetaStore object pin classeswith  hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"
> 15/04/01  14:41:46  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MFieldSchema"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
> 15/04/01  14:41:46  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MOrder"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
> 15/04/01  14:41:47  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MFieldSchema"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
> 15/04/01  14:41:47  INFO Datastore: The class"org.apache.hadoop.hive.metastore.model.MOrder"  is  taggedas  "embedded-only"  so doesnot  have its own datastoretable.
> 15/04/01  14:41:47  INFO Query: Readingin  resultsfor  query"org.datanucleus.store.rdbms.query.SQLQuery@0"  since theconnection  usedis  closing
> 15/04/01  14:41:47  INFO ObjectStore: Initialized ObjectStore
> 15/04/01  14:41:47  INFO HiveMetaStore: Added admin rolein  metastore
> 15/04/01  14:41:47  INFO HiveMetaStore: Addedpublic  rolein  metastore
> 15/04/01  14:41:48  INFO HiveMetaStore:No  user  is  addedin  admin role, since configis  empty
> 15/04/01  14:41:48  INFO SessionState:No  Tezsession  requiredat  this point. hive.execution.engine=mr.
> 15/04/01  14:41:49  INFO ParseDriver: Parsing command:SELECT  path, name,value, v1.peValue, v1.peName
>               FROM  metric
>               lateralview  json_tuple(pathElements,'name','value') v1
>                 as  peName, peValue
> 15/04/01  14:41:49  INFO ParseDriver: Parse Completed
> Exception  in  thread"main"  java.lang.ClassNotFoundException: json_tuple
>      at  java.net.URLClassLoader$1.run(URLClassLoader.java:372)
>      at  java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>      at  java.security.AccessController.doPrivileged(Native Method)
>      at  java.net.URLClassLoader.findClass(URLClassLoader.java:360)
>      at  java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>      at  java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>      at  org.apache.spark.sql.hive.HiveFunctionWrapper.createFunction(Shim13.scala:141)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.function$lzycompute(hiveUdfs.scala:261)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.function(hiveUdfs.scala:261)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector$lzycompute(hiveUdfs.scala:267)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputInspector(hiveUdfs.scala:267)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes$lzycompute(hiveUdfs.scala:272)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.outputDataTypes(hiveUdfs.scala:272)
>      at  org.apache.spark.sql.hive.HiveGenericUdtf.makeOutput(hiveUdfs.scala:278)
>      at  org.apache.spark.sql.catalyst.expressions.Generator.output(generators.scala:60)
>      at  org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
> 	at  org.apache.spark.sql.catalyst.plans.logical.Generate$$anonfun$1.apply(basicOperators.scala:50)
>      at  scala.Option.map(Option.scala:145)
>      at  org.apache.spark.sql.catalyst.plans.logical.Generate.generatorOutput(basicOperators.scala:50)
>      at  org.apache.spark.sql.catalyst.plans.logical.Generate.output(basicOperators.scala:60)
>      at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
> 	at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveChildren$1.apply(LogicalPlan.scala:118)
>      at  scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
> 	at  scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
>      at  scala.collection.immutable.List.foreach(List.scala:318)
>      at  scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
>      at  scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
>      at  org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveChildren(LogicalPlan.scala:118)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:159)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6$$anonfun$applyOrElse$1.applyOrElse(Analyzer.scala:156)
>      at  org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:144)
>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.org  <http://catalyst.plans.QueryPlan.org>$apache$spark$sql$catalyst$plans$QueryPlan$$transformExpressionDown$1(QueryPlan.scala:71)
> 	at  org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1$$anonfun$apply$1.apply(QueryPlan.scala:85)
>      at  scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
> 	at  scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>      at  scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>      at  scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>      at  scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>      at  scala.collection.AbstractTraversable.map(Traversable.scala:105)
>      at  org.apache.spark.sql.catalyst.plans.QueryPlan$$anonfun$1.apply(QueryPlan.scala:84)
> 	at  scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
>      at  scala.collection.Iterator$class.foreach(Iterator.scala:727)
>      at  scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
>      at  scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
>      at  scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
>      at  scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
>      at  scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
>      at  scala.collection.AbstractIterator.to(Iterator.scala:1157)
>      at  scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
>      at  scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
>      at  scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
>      at  scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressionsDown(QueryPlan.scala:89)
>      at  org.apache.spark.sql.catalyst.plans.QueryPlan.transformExpressions(QueryPlan.scala:60)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:156)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$6.applyOrElse(Analyzer.scala:153)
>      at  org.apache.spark.sql.catalyst.trees.TreeNode.transformUp(TreeNode.scala:206)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:153)
>      at  org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:152)
>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61)
>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59)
>      at  scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
>      at  scala.collection.immutable.List.foldLeft(List.scala:84)
>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59)
> 	at  org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51)
>      at  scala.collection.immutable.List.foreach(List.scala:318)
>      at  org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:411)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:411)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.withCachedData$lzycompute(SQLContext.scala:412)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.withCachedData(SQLContext.scala:412)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan$lzycompute(SQLContext.scala:413)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.optimizedPlan(SQLContext.scala:413)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:418)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:416)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:422)
>      at  org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:422)
>      at  org.apache.spark.sql.SchemaRDD.collect(SchemaRDD.scala:444)
>      at  com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite$.main(ElasticSearchReadWrite.scala:119)
>      at  com.opsdatastore.elasticsearch.spark.ElasticSearchReadWrite.main(ElasticSearchReadWrite.scala)
>      at  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      at  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>      at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>      at  java.lang.reflect.Method.invoke(Method.java:483)
>      at  org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
>      at  org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
>      at  org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)|
>
> Json:
>
> |"metric": {
>
>      "path":"/PA/Pittsburgh/12345 Westbrook Drive/main/theromostat-1",
>      "pathElements": [
>      {
>          "node":"State",
>          "value":"PA"
>      },
>      {
>          "node":"City",
>          "value":"Pittsburgh"
>      },
>      {
>          "node":"Street",
>          "value":"12345 Westbrook Drive"
>      },
>      {
>          "node":"level",
>          "value":"main"
>      },
>      {
>          "node":"device",
>          "value":"thermostat"
>      }
>      ],
>      "name":"Current Temperature",
>      "value":29.590943279257175,
>      "timestamp":"2015-03-27T14:53:46+0000"
>    }|
>
> Here is the code that produces the error:
>
> |// Spark imports
> import  org.apache.spark.{SparkConf, SparkContext}
> import  org.apache.spark.SparkContext._
>
> import  org.apache.spark.rdd.RDD
>
> import  org.apache.spark.sql.{SchemaRDD,SQLContext}
> import  org.apache.spark.sql.hive._
>
> // ES imports
> import  org.elasticsearch.spark._
> import  org.elasticsearch.spark.sql._
>
> def  main(args: Array[String]) {
>      val  sc = sparkInit
>
>      @transient
>      val  hiveContext =new  org.apache.spark.sql.hive.HiveContext(sc)
>
>      import  hiveContext._
>
>      val  start = System.currentTimeMillis()
>
>      /*
>       * Read from ES and provide some insights with SparkSQL
>       */
>      val  esData = sc.esRDD(s"${ElasticSearch.Index}/${ElasticSearch.Type}")
>
>      esData.collect.foreach(println(_))
>
>      val  end = System.currentTimeMillis()
>      println(s"Total time: ${end-start} ms")
>
>      println("Create Metric Temporary Table for querying")
>
>      val  schemaRDD = hiveContext.sql(
>            "CREATE TEMPORARY TABLE metric"  +
>            "USING org.elasticsearch.spark.sql"  +
>            "OPTIONS (resource 'device/metric')"  )
>
>      hiveContext.sql(
>          """SELECT path, name, value, v1.peValue, v1.peName
>               FROM metric
>               lateral view json_tuple(pathElements, 'name', 'value') v1
>                 as peName, peValue
>          """)
>          .collect.foreach(println(_))
>    }
> }|
>
> More than likely I’m missing a jar, but not sure what that would be.
>
> -Todd
>