是否可以将spark 2.4.3连接到远程hbase 1.3.2服务器?
我试过使用这个版本:
https://repo.hortonworks.com/content/repositories/releases/com/hortonworks/shc-core/1.1.1-2.1-s_2.11/
但似乎存在兼容性问题:
java.lang.nosuchmethoderror:org.json4s.jackson.jsonmethods$.parse(lorg/json4s/jsoninput;z) lorg/json4s/jsonast$jvalue;
spark-submit --packages com.hortonworks:shc-core:1.1.1-2.1-s_2.11 --repositories http://repo.hortonworks.com/content/groups/public/ /hbase-read.py
read.py只是一个简单的测试读本:
from pyspark.sql import SQLContext, SparkSession
spark = SparkSession \
.builder \
.appName("test") \
.enableHiveSupport() \
.getOrCreate()
sc = spark.sparkContext
sqlc = SQLContext(sc)
data_source_format='org.apache.spark.sql.execution.datasources.hbase'
catalog = ''.join("""{
"table":{"namespace":"default", "name":"testtable"},
"rowkey":"key",
"columns":{
"col0":{"cf":"rowkey", "col":"key", "type":"string"},
"col1":{"cf":"cf", "col":"col1", "type":"string"}
}
}""".split())
df = sqlc.read.options(catalog=catalog).format(data_source_format).load()
df.show()
我知道这个shc核心版本可以与spark2.3.3一起使用,但是对于2.4+,我还有什么选择呢?
我是从源代码中的shc核心构建的,但当我引用jar时,收到以下错误:
原因:java.lang.classnotfoundexception:org.apache.hadoop.hbase.client.tabledescriptor
尽管我引用了所有必要的jar:
spark-submit --jars /shc/core/target/shc-core-1.1.3-2.4-s_2.11.jar,/hbase-jars/hbase-client-1.3.2.jar /hbase-read.py
1条答案
按热度按时间31moq8wy1#
1) 是否可以将spark 2.4.3连接到远程hbase 1.3.2服务器?
是的,这是可能的。您可以使用hbase客户端或shc核心进行连接。
2) java.lang.nosuchmethoderror:org.json4s.jackson.jsonmethods$.parse(lorg/json4s/jsoninput;z) lorg/json4s/jsonast$jvalue;
这意味着还有一个不同版本的json4sjar。检查完整堆栈跟踪。从哪个班级开始。拆下附加罐。
3) 原因:java.lang.classnotfoundexception:org.apache.hadoop.hbase.client.tabledescriptor
这个jar shc-core-1.1.3-2.4-sè2.11.jar使用hbase版本>=2.0,其中引入了tabledescriptor类。在hbase 1.3.2版本中,没有这样的类,而是有htabledescriptor。如果您希望使用最新的shc core版本,您必须使用hbase版本>=2.0,如果您的hbase版本<2.0,则使用兼容的shc core版本(<=v1.1.2-2.2)
4) 我知道这个shc核心版本可以与spark2.3.3一起使用,但是对于2.4+,我还有什么选择呢?
shc核心是非常直接的。它也适用于任何2.4版本。它将为spark提供如何将不同类型的列转换为字节(来回)的sql计划。确保为hbase选择了正确的jar。