Issue
在 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。
有什么解决方法吗?
Error
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>
Code
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()
没有明显的答案。快速检查SHC POM https://github.com/hortonworks-spark/shc/blob/master/pom.xml不显示 json 文件的直接导入,因此您不能只更改该 pom 并自己构建工件。
您必须与 EMR 团队交谈,让他们同步构建连接器和 HBase。
FWIW,让 Jackson 保持同步是发布大数据堆栈的压力点之一,而 AWS SDK 习惯于每两周发布一次更新其要求,这是压力点之一......Hadoop 迁移到 aws 阴影 SDK 纯粹是为了停止AWS 工程决策为每个人定义了选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)