amazon-web-services - EMR 5.21、Spark 2.4 - 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,所以我不能用较低的 json4s 重建 spark。
有什么解决方法吗?
错误
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()

最佳答案

没有明显的答案。快速检查 the SHC POM不显示 json 文件的直接导入,因此您不能仅更改该 pom 并自己构建工件。

您将不得不与 EMR 团队交谈,让他们同步构建连接器和 HBase。

FWIW,让jackson同步是发布大数据堆栈的压力点之一,而AWS SDK每两周发布一次更新要求的习惯也是压力点之一...... Hadoop移至aws shaded SDK纯粹是为了停止AWS 工程决策定义了每个人的选择。

关于amazon-web-services - EMR 5.21、Spark 2.4 - Json4s 依赖被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070647/

相关文章:

caching - 为整个 S3 存储桶/CloudFront 设置默认缓存控制和过期

javascript - 如何与 React JS/Node JS 一起部署到 Amazon Web Services (AWS)?

macos - 在云中运行 VMWare 镜像

hadoop - 并非所有 Spark Worker 都在启动 : SPARK_WORKER_INSTANCES

python - 在 EMR 中运行 Jupyter 笔记本时没有名为 'pyspark' 的模块

hadoop - 读取到Mapper类中的map方法的值不正确或读取不完全

amazon-web-services - 如何在 AWS EMR notebook 上安装 python 库?

amazon-web-services - 访问 AWS 上的 Redis 服务器

apache-spark - Apache Spark : Differences between client and cluster deploy modes

hadoop - sqlContext.read...load() 和 sqlContext.write...save() 代码在 Spark Cluster 上运行在哪里?