通过ApachePhoenix将hbase数据读入spark

g6baxovj  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(455)

作为与spark、phoenix和hbase合作的noob,这是一个尝试性的例子,这里和这里都列出了。
根据此处的“美国人口”示例创建数据。
但是,在尝试通过spark查询phoenix/hbase中创建的表时,我得到以下错误-

scala> val rdd = sc.phoenixTableAsRDD("us_population", Seq("CITY", "STATE", "POPULATION"), zkUrl = Some("random_aws.internal:2181"))
java.lang.NoClassDefFoundError: org/apache/phoenix/jdbc/PhoenixDriver
  at org.apache.phoenix.spark.PhoenixRDD.<init>(PhoenixRDD.scala:40)
  at 
org.apache.phoenix.spark.SparkContextFunctions.phoenixTableAsRDD(SparkContextFunctions.scala:39)
  ... 52 elided
Caused by: java.lang.ClassNotFoundException: org.apache.phoenix.jdbc.PhoenixDriver
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 54 more

不确定为什么会出现此错误。如有任何帮助,我们将不胜感激!
p、 用以下命令加载spark-

spark-shell --jars /usr/lib/phoenix/phoenix-spark-4.9.0-HBase-1.2.jar

我在一个由1个主节点和1个名称节点(都是r4.xlarge,带有20gb ssd外部存储)组成的小型aws emr群集上尝试此操作

3npbholx

3npbholx1#

由于spark executors类路径中缺少类org.apache.phoenix.jdbc.phoenixdriver而导致的异常。
尝试在启动sparkshell时添加phoenix-core-4.9.0-hbase-1.2.jar。

spark-shell --jars /usr/lib/phoenix/phoenix-spark-4.9.0-HBase-1.2.jar,/usr/lib/phoenix/phoenix-core-4.9.0-HBase-1.2.jar

相关问题