【问题标题】:Is it possible to create Spark application with spark-avro datasource and execute it via 'java -jar'是否可以使用 spark-avro 数据源创建 Spark 应用程序并通过“java -jar”执行它
【发布时间】:2019-05-06 12:18:17
【问题描述】:

我有一个 java 应用程序,它使用 spark 以各种格式(json、avro、...)从各种数据源(hadoop、本地文件系统、..)访问数据。

   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 运行此类应用程序

【问题讨论】:

    标签: java maven apache-spark avro


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2014-08-01
      • 2019-01-24
      • 1970-01-01
      • 2018-09-04
      • 2017-08-03
      • 2015-10-31
      相关资源
      最近更新 更多