在EMR 5.21中,Spark-Hbase集成被破坏。
df.write.options()。format()。save()失败。
原因是spark 2.4,EMR 5.21中的json4s-jackson版本3.5.3
在EMR 5.11.2,Spark 2.2,son4s-jackson版本3.2.11中正常工作
问题是这是EMR,所以我无法用较低的json4s重建火花。
有什么解决方法吗?
py4j.protocol.Py4JJavaError:调用o104.save时发生错误。 :java.lang.NoSuchMethodError:org.json4s.jackson.JsonMethods $ .parse(Lorg / json4s / JsonInput; Z)Lorg / json4s / JsonAST $ JValue;
spark-submit --master yarn \
--jars /usr/lib/hbase/ \
--packages com.hortonworks:shc-core:1.1.3-2.3-s_2.11 \
--repositories http://repo.hortonworks.com/content/groups/public/ \
pysparkhbase_V1.1.py s3://<bucket>/ <Namespace> <Table> <cf> <Key>
import sys
from pyspark.sql.functions import concat
from pyspark import SparkContext
from pyspark.sql import SQLContext,SparkSession
spark = SparkSession.builder.master("yarn").appName("PysparkHbaseConnection").config("spark.some.config.option", "PyHbase").getOrCreate()
spark.sql("set spark.sql.parquet.compression.codec=uncompressed")
spark.conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
data_source_format = 'org.apache.spark.sql.execution.datasources.hbase'
df = spark.read.parquet(file)
df.createOrReplaceTempView("view")
.
cat = '{|"table":{"namespace":"' + namespace + '", "name":"' + name + '", "tableCoder":"' + tableCoder + '", "version":"' + version + '"}, \n|"rowkey":"' + rowkey + '", \n|"columns":{'
.
df.write.options(catalog=cat).format(data_source_format).save()
答案 0 :(得分:0)
没有明显的答案。快速检查the SHC POM不会显示直接导入json文件,因此您不能只是更改pom并自己构建工件。
您将不得不与EMR团队交谈,以使他们同步构建连接器和HBase。
FWIW,使杰克逊同步是释放大数据堆栈的压力之一,并且AWS SDK习惯于每两周更新其需求,从而释放压力之一... Hadoop移至aws阴影的SDK纯粹是为了停止AWS工程决策为每个人定义选择。
答案 1 :(得分:0)
将json4s降级为3.2.10即可解决。但我认为这是SHC错误,需要对其进行升级。