问题
在EMR 5.21中,Spark - Hbase集成被破坏。
df.write.options().format().save()失败。
原因是json4s-jackson版本3.5.3在spark 2.4中,EMR 5.21
它在EMR 5.11.2,Spark 2.2,son4s-jackson版本3.2.11中运行良好
问题是这是电子病历,所以我不能重建火花与较低的json4s。
有什么变通方法吗?
错误
py4j.protocol.Py4JJavaError:调用o104.save时出错。:org.json4s.jackson.JsonMethods$.parse(Lorg/json4s/JsonInput;Z)Lorg/json4s/JsonAST$JValue;:java.lang.NoSuchMethodError
提交
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()发布于 2019-03-09 23:32:33
没有明显的答案。快速检查the SHC POM不会显示json文件的直接导入,因此您不能只更改pom并自己构建工件。
您必须与电子病历团队沟通,让他们同步构建连接器和HBase。
FWIW,让jackson同步是发布大数据堆栈的压力点之一,而AWS SDK每两周发布一次需求的习惯是压力点之一……Hadoop迁移到aws shaded SDK纯粹是为了阻止AWS定义每个人的选择的工程决策。
发布于 2020-09-18 17:07:48
将json4s降级到3.2.10可以解决此问题。但我认为这是SHC错误,需要升级它。
https://stackoverflow.com/questions/55070647
复制相似问题