Apache spark 从pyspark读取hbase

Apache spark 从pyspark读取hbase,apache-spark,pyspark,hbase,Apache Spark,Pyspark,Hbase,我正试图用pyspark阅读hbase hbase版本:hbase 1.2.0-cdh5.16.2 pyspark版本:版本2.3.0.cloudera4 我想我需要用这个罐子 我下载了它并运行代码: 从pyspark.sql导入SparkSession app_name=“hbase” 火花=( SparkSession.builder.master(“纱线”) .appName(应用程序名称) .config(“spark.jars”、“hbase-spark-1.2.0-cdh5.16

我正试图用pyspark阅读hbase

  • hbase版本:hbase 1.2.0-cdh5.16.2
  • pyspark版本:版本2.3.0.cloudera4
我想我需要用这个罐子

我下载了它并运行代码:

从pyspark.sql导入SparkSession
app_name=“hbase”
火花=(
SparkSession.builder.master(“纱线”)
.appName(应用程序名称)
.config(“spark.jars”、“hbase-spark-1.2.0-cdh5.16.2.jar”)
.getOrCreate()
)
dataSourceFormat=“org.apache.hadoop.hbase.spark”
readCatalog=“”{
“表:{“名称空间”:“名称空间\开发”,“名称”:“日志”},
“rowkey”:“key”,
“栏目”:{
“key”:{“cf”:“rowkey”,“col”:“key”,“type”:“string”},
“文章”:{“cf”:“atlas_数据”,“col”:“文章”,“类型”:“int”}
}
}"""
readDF=spark.read.options(catalog=readCatalog).format(dataSourceFormat.load())
但我得到了一个错误:

Py4JJavaError:调用o87.load时出错。
:java.lang.ClassNotFoundException:org.apache.spark.Logging已在spark 2.0中删除。请检查您的库是否与Spark 2.0兼容

据我所知,我目前的版本与Spark 2不兼容。对吗?
在这种情况下,我在哪里可以找到Spark 2.X可用的相同驱动程序?

Spark版本是2.3.0,而hbase连接器是Spark 1.2.0,只需尝试从maven central repository使用更新的版本,如。

问题是您使用的是
Spark.jars
,并且只传递hbase Spark连接器的名称。但是这个连接器本身依赖于大量的JAR,例如
hbase-client
,并且找不到这些JAR中的类,例如
hbase-client
中的
TableDescriptor
,因为您没有指定它们

您有几种解决方案:

  • spark.jars
    中明确指定所有依赖项-但这可能会很麻烦,因为依赖项的数量很高
  • 启动
    Spark shell
    Spark submit
    时,通过
    --packages org.apache.HBase:HBase Spark:1.2.0-cdh5.16.2
    指定Spark HBase连接器更容易,但您可能需要指定
    --repository
    ,以便能够拉取Cloudera版本
  • 为HBase Spark connector创建一个包含所有依赖项的胖jar,但这应该由您自己完成,因为我没有看到官方的“胖jar”

  • 我个人会选择选项2…

    它给了我另一个错误:
    Py4JJavaError:调用o87.load时出错:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/client/TableDescriptor
    @dumitry显然,但我可能错了,类
    TableDescriptor
    与hbase 2.x相关,因此它在hbase 1中不存在。2@Steven您试图运行代码的环境是什么(cloudera版本、hive版本、spark版本)?@dumitry使用。我们在上面安装了spark 2.3。