如何在Junit中包含Spark 2.4的外部avro软件包?

时间:2019-07-16 20:20:39

标签: apache-spark junit avro spark-avro

我可能会问我如何避免

Avro is built-in but external data source module since Spark 2.4

我一直在使用以下approach在junit中引导我的会话(此方法适用于我所有其他测试)。

sparkSession = SparkSession.builder().appName("testings")
      .master("local[2]")
      .config("", "")
      .getOrCreate()

但是当我尝试将avro文件读入DF时

final Dataset<Row> df = sparkSession.read().format("avro").load(inputFilePath.toString());

我收到以下异常:

org.apache.spark.sql.AnalysisException: Failed to find data source: avro. Avro is built-in but external data source module since Spark 2.4. Please deploy the application as per the deployment section of "Apache Avro Data Source Guide".;

spark documentation中,提到对于spark-submit或spark-shell,我们应该使用--package选项。

如何包含--package进行junit测试?

为了安全起见,我什至包括了maven依赖项

 <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-avro_2.11</artifactId>
            <version>${spark-core.version}</version>
</dependency>

我想补充一点,以下代码可用于我的单元测试:

final Dataset<Row> df = sparkSession.read().format("org.apache.spark.sql.avro.AvroFileFormat").load(inputFilePath.toString());

0 个答案:

没有答案