Apache spark 从pyspark读取hbase
我正试图用pyspark阅读hbaseApache 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
- 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版本我个人会选择选项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。