我有一个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);
我能够创建胖jar并通过“ java -jar”运行它。只要我将JSON用作“ FORMAT”,就没有问题。但是,如果将“ 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
答案 0 :(得分:0)
问题出在maven构建插件中。我使用的是maven-assembly-plugin
,但是当我将其替换为maven-shade-plugin
时,一切正常。