Amazon web services EMR 5.21,Spark 2.4-Json4s依赖关系已断开 问题

Amazon web services EMR 5.21,Spark 2.4-Json4s依赖关系已断开 问题,amazon-web-services,apache-spark,amazon-emr,json4s,Amazon Web Services,Apache Spark,Amazon Emr,Json4s,在EMR 5.21中,Spark-Hbase集成被破坏。 df.write.options().format().save()失败。 原因是spark 2.4中的json4s jackson版本3.5.3,EMR 5.21 它在EMR 5.11.2、Spark 2.2、son4s jackson版本3.2.11中运行良好 问题是这是EMR,所以我不能用较低的JSON4重建spark 有什么解决办法吗 错误 py4j.protocol.Py4JJavaError:调用o104.save时出错:ja

在EMR 5.21中,Spark-Hbase集成被破坏。
df.write.options().format().save()失败。
原因是spark 2.4中的json4s jackson版本3.5.3,EMR 5.21
它在EMR 5.11.2、Spark 2.2、son4s jackson版本3.2.11中运行良好
问题是这是EMR,所以我不能用较低的JSON4重建spark
有什么解决办法吗

错误 py4j.protocol.Py4JJavaError:调用o104.save时出错:java.lang.NoSuchMethodError:org.json4s.jackson.JsonMethods$.parse(Lorg/json4s/JsonInput;Z)Lorg/json4s/JsonAST$JValue

服从
没有明显的答案。快速检查不会显示json文件的直接导入,因此您不能仅仅更改pom&自己构建工件

您必须与EMR团队沟通,让他们同步构建连接器和HBase


FWIW,让jackson同步是发布大数据堆栈的压力点之一,AWS SDK习惯于在每两周发布一次的压力点上更新其需求。。。Hadoop迁移到aws shaded SDK纯粹是为了阻止aws工程决策为每个人定义选择。

将json4s降级到3.2.10可以解决这个问题。但我认为这是SHC错误,需要升级。

json4s是spark的依赖项,而不是SHC类似的问题是否有其他方法将spark数据帧推到hbase中?恐怕超出了我的深度
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()