我有一个java应用程序,它使用spark从各种数据源(hadoop、本地文件系统等)访问数据。各种格式(json、avro等)。
SparkSession spark = SparkSession
.builder()
.appName("Spark app")
.master("local")
.getOrCreate();
Dataset<Row> dataset = spark
.read()
.format(FORMAT)) // avro, json, ...
.load(FILEPATH);我能够创建fat jar并通过"java -jar“运行它。只要我使用JSON作为“格式”,就没有问题。但如果将"JSON“替换为"AVRO”,则会抛出该Failed to find data source: AVRO. Avro is built-in but external data source module since Spark 2.4异常。如果我直接在(IDE)中运行它,那么avro也可以运行,但如果它是在jar中运行的,那么它只能运行JSON。
我知道avro是spark的外部数据源,它必须以某种方式添加到spark中,但我不知道如何以及是否可以仅通过java -jar app.jar -param -param1运行这样的应用程序
发布于 2019-05-07 16:19:42
问题出在maven构建插件中。我使用的是maven-assembly-plugin,但当我将它替换为maven-shade-plugin时,一切都正常了。
https://stackoverflow.com/questions/56005071
复制相似问题