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

标签 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);

我能够创建 fat jar 并通过“java -jar”运行它。只要我使用 JSON 作为“格式”就没有问题。但是如果“JSON”被“AVRO”替换,那么它会抛出无法找到数据源:AVRO的异常。从 Spark 2.4 开始,Avro 是内置但外部的数据源模块。如果我直接在(IDE)中运行它,那么即使使用 avro 也可以正常工作,但如果它在 jar 中,则只能使用 JSON。

我知道 avro 是 Spark 的外部数据源,并且必须以某种方式将其添加到 Spark,但不知道如何以及是否可以仅通过 java -jar app.jar -param - 运行此类应用程序参数1

最佳答案

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

关于java - 是否可以使用spark-avro数据源创建Spark应用程序并通过 'java -jar'执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56005071/

相关文章:

elasticsearch - Cassandra,Spark,Elasticsearch:在kibana中流化数据以进行可视化

java - 在 Robolectric 上运行第一个测试时出现问题

java - 以全屏模式启动 MPlayer

java - 项目无法执行Findbugs : java. lang.ArrayIndexOutOfBoundsException

java - Spring Boot 应用程序在 IDE 中运行时工作,但当部署为 war 文件时,请求失败并出现 500 错误

scala - 读取HDF5文件

scala - 从 Spark 写入 DynamoDB

java - 如何禁用URL中的struts jsessionid

java - 在 Java 中执行协整检验的代码

maven - 使用通配符使用 maven-assembly-plugin 复制文件夹