无法在包

时间:2016-12-21 05:29:17

标签: dataframe hivecontext spark-hive

HI编码器, 我又回来了。我正在尝试使用我的scala代码中的HIve上下文从数据框创建一个hive表,我能够在sqlContext中执行它,但是当涉及到HiveContext时,它会抛出此错误

[error] /home/mapr/avroProject/src/main/scala/AvroConsumer.scala:75: object HiveContext in package hive cannot be accessed in package org.apa                                                che.spark.sql.hive
[error] HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc.sc());

我也尝试了同样略有不同的声明,

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

我也添加了sbt库依赖项,

  

libraryDependencies + =“org.apache.spark”%“spark-hive_2.10”%   “1.6.1”

我也尝试了“提供”。

这是我的代码

 messages.foreachRDD(rdd=>
{
 import org.apache.spark.sql.hive.HiveContext
HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc.sc());
//import org.apache.spark.sql.hive._
//val dataframe = sqlContext.read.json(rdd.map(_._2))
val dataframe =sqlContext.read.json(rdd.map(_._2))
val df =dataframe.toDF()

有什么问题吗?我从未遇到过这种“无法访问”的错误。

我还尝试从代码中创建一个temptable

val dataframe =sqlContext.read.json(rdd.map(_._2))
 val df =dataframe.toDF()
  df.registerTempTable("mdl_events")

但我在哪里可以找到mdl_events表?火花中有没有任何默认数据库我可以找到这个?我不能喜欢火花壳。

1 个答案:

答案 0 :(得分:0)

嗨我想出来了,从1.3v spark开始,默认情况下hivecontext可用作SqlContext。如此明确地称呼Hivecontext并不鼓励。 以下代码可以帮助您解决此问题,

messages.foreachRDD(rdd=>
      {
      val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
         import sqlContext.implicits._
      val dataframe =sqlContext.read.json(rdd.map(_._2))
      val df =dataframe.toDF()
})