我正在尝试将delta core添加到我的scalaspark项目中,运行2.4.4。
我看到的一个奇怪的行为是,它似乎与spark avro有冲突。maven构建成功,但在运行时我会出错。
如果首先声明了增量表依赖关系,则会出现一个运行时错误,即未安装spark avro:
用户类引发异常:org.apache.spark.sql.analysisexception:找不到数据源:avro。avro是内置的,但外部数据源模块,因为Spark2.4。请按照“ApacheAvro数据源指南”的部署部分部署应用程序。;
<dependencies>
<dependency>
<groupId>io.delta</groupId>
<artifactId>delta-core_2.11</artifactId>
<version>0.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-avro_2.11</artifactId>
<version>2.4.4</version>
</dependency>
如果首先定义了spark avro,那么avro可以工作,但是delta会得到一个异常:
用户类引发异常:java.lang.classnotfoundexception:找不到数据源:delta。请在以下地址查找包裹http://spark.apache.org/third-party-projects.html
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-avro_2.11</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>io.delta</groupId>
<artifactId>delta-core_2.11</artifactId>
<version>0.6.1</version>
</dependency>
我认为这可能是某种依赖冲突,所以我尝试:
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
但都没用。
1条答案
按热度按时间btxsgosb1#
在delta核心问题页面找到了答案。谢谢你!
完整的解决方案是基于这个先前的堆栈溢出答案来合并meta-inf下的服务,这样不同的spark源就不会相互覆盖。
完整的解决方案-我将maven程序集插件更改为:
在新的tvm\u assembly.xml文件中(基于带有dependencies的原始jar,添加了merge的属性):