EMR 5.21, Spark 2.4 - зависимость Json4s нарушена - PullRequest
2 голосов
/ 08 марта 2019

Выпуск

В EMR 5.21 интеграция Spark - Hbase не работает.
df.write.options (). Format (). Save () завершается ошибкой.
Причина - версия json4s-jackson3.5.3 в spark 2.4, EMR 5.21
он отлично работает в 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>
1016Код
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()

1 Ответ

0 голосов
/ 09 марта 2019

Там нет очевидного ответа.Быстрая проверка SHC POM не показывает прямой импорт файла json, поэтому вы не можете просто изменить этот pom и создать артефакт самостоятельно.

Вы собираетесьчтобы поговорить с командой EMR, чтобы они собрали синхронизированный соединитель и HBase.

FWIW, синхронизация Джексона - это одна из главных проблем при выпуске большого стека данных, и привычка AWS SDK обновлять свои требования по двухнедельному освобождению одной из точек нагрузки ... Hadoop перешел кAWS затеняет SDK исключительно для того, чтобы помешать инженерным решениям AWS определять выбор для всех.

...