是否可以使用spark-avro数据源创建Spark应用程序并通过'java -jar'执行它

时间:2019-05-06 12:18:17

标签: java maven apache-spark avro

我有一个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

运行此类应用程序

1 个答案:

答案 0 :(得分:0)

问题出在maven构建插件中。我使用的是maven-assembly-plugin,但是当我将其替换为maven-shade-plugin时,一切正常。