我想使用apache phoenix框架。
import org.apache.spark.SparkContext
import org.apache.spark.sql._
import org.apache.phoenix.spark._
// Load INPUT_TABLE
object MainTest2 extends App {
val sc = new SparkContext("local", "phoenix-test")
val sqlContext = new SQLContext(sc)
val df = sqlContext.load("org.apache.phoenix.spark", Map("table" -> "INPUT_TABLE",
"zkUrl" -> "localhost:3888"))
}
这是我正在使用的SBT:
name := "spark-to-hbase"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.apache.hadoop" % "hadoop-mapreduce-client-core" % "2.3.0",
"org.apache.phoenix" % "phoenix-core" % "4.11.0-HBase-1.3",
"org.apache.spark" % "spark-core_2.11" % "2.1.1",
"org.apache.spark" % "spark-sql_2.11" % "2.1.1",
"org.apache.phoenix" % "phoenix-spark" % "4.11.0-HBase-1.3"
)
这里有一个例外:
线程“main”java.lang.NoClassDefFoundError中出现异常:
org.apache.phoenix.query.ConfigurationFactory$ConfigurationFactoryImpl$1.call(ConfigurationFactory.java:49)
org.apache.phoenix.query.ConfigurationFactory$ConfigurationFactoryImpl$1.call(ConfigurationFactory.java:46)
PhoenixContextExecutor.call(phoenixcontextExecuter.java:76)
phoenix.util.phoenix ContextExecutor.callWithoutPropagation(phoenix contextExecuter.java:91)
PhoenixDriver.initializeConnectionCache(PhoenixDriver.java:151)
在
凤凰城jdbc PhoenixDriver
在
架构(PhoenixRelation.scala:52)
在
org.apache.spark.sql.execution.datasources.LogicalRelation。(logicalrelations.scala:40)
apache.spark.sql.SparkSession.baseRelationToDataFrame(sparksression.scala:389)
在
load(DataFrameReader.scala:146)
在
load(DataFrameReader.scala:125)
加载(SQLContext.scala:965)
MainTest2$.delayedEndpoint$MainTest2$1(MainTest2.scala:9)
MainTest2$delayedInit$body。应用(maintest1.scala:6)于
scala.Function0$class.apply$mcV$sp(Function0.scala:34)at
在scala.App$$anonfun$main$1。应用(App.scala:76)在
scala.App$$anonfun$main$1。应用(App.scala:76)于
scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
在scala.App$class.main(应用程序scala:76)处
原因:java.lang.ClassNotFoundException:
org.apache.hadoop.hbase。HBA配置
findClass(URLClassLoader.java:381)位于
loadClass(ClassLoader.java:424)位于
post
.
我能做些什么来克服这个问题?