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表?火花中有没有任何默认数据库我可以找到这个?我不能喜欢火花壳。
答案 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()
})