我正在尝试在zeppelin上执行以下代码
df = spark.read.csv('/path/to/csv')
df.show(3)
但我得到以下错误
Py4JJavaError: An error occurred while calling o786.collectToPython. : org.apache.spark.SparkException: Job aborted due to stage failure: Task 5 in stage 39.0 failed 4 times, most recent failure: Lost task 5.3 in stage 39.0 (TID 326, 172.16.23.92, executor 0): java.io.InvalidClassException: org.apache.commons.lang3.time.FastDateParser; local class incompatible: stream classdesc serialVersionUID = 2, local class serialVersionUID = 3
我在2节点集群上运行hadoop-2.7.3并在独立模式和zeppelin 0.8.1上运行spark 2.3.2,这个问题只发生在使用zepplin并且我在zeppelin配置中有SPARK_HOME时。
我解决了它,问题是zeppelin正在使用commons-lang3-3.5.jar和spark使用commons-lang-2.6.jar所以我所做的就是在解释器菜单上添加jar路径到zeppelin配置:
1单击导航栏中的“解释器”菜单。
2,单击要加载依赖项的解释器的“编辑”按钮。
3填充工件并根据您的需要排除字段。将路径添加到相应的jar文件中。
4 - 按“保存”以使用加载的库重新启动解释器。
Zeppelin使用其commons-lang2 jar流式传输到Spark执行器,而Spark本地使用common-lang3。就像Achref提到的那样,只需填写commons-lang3的神器位置并重新启动解释器,那么你应该很好。