【问题标题】:spark/pyspark integration with HBasespark/pyspark 与 HBase 的集成
【发布时间】:2020-01-07 18:34:45
【问题描述】:

是否可以将 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-core 版本适用于 Spark 2.3.3,但是对于 2.4+,我有哪些替代选项?

我是从源代码的 shc-core 构建的,但是当我引用 jar 时,我收到此错误:

原因:java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.TableDescriptor

即使我已经引用了所有必要的罐子:

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

【问题讨论】:

    标签: python apache-spark hadoop pyspark hbase


    【解决方案1】:

    1)是否可以将 Spark 2.4.3 连接到远程 HBase 1.3.2 服务器?

    是的,这是可能的。您可以使用 Hbase 客户端或 也使用 shc-core。

    2) java.lang.NoSuchMethodError: org.json4s.jackson.JsonMethods$.parse(Lorg/json4s/JsonInput;Z)Lorg/json4s/JsonAST$JValue;

    这意味着还有一个不同版本的 json4s jar。查看 完整的堆栈跟踪。从哪个类调用它。除掉 额外的罐子。

    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 in 引入了哪个 TableDescriptor 类。在 Hbase 1.3.2 版本没有这样的类,而是有 HTableDescriptor。如果你 希望使用最新的 shc-core 版本,你有你使用 hbase 版本 >=2.0,如果您的 hbase 版本

    4)我知道这个 shc-core 版本适用于 Spark 2.3.3,但是对于 2.4+,我有哪些替代选择?

    shc-core 非常简单。它适用于任何 2.4 也是。它将为 spark 提供关于如何转换的 sql 计划 不同类型的列到字节(来回)。确保你是 为您的 hbase 选择正确的 jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2016-04-08
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多