我可能会问我如何避免
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());