我们正在对冰山进行POC测试,并首次对其进行评估。
火花环境:
workers)
)
正如Iceberg的官方文档中所建议的,为了在shell中添加对Iceberg的支持,我们在启动shell时添加了Iceberg依赖项,如下所示,
spark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.2_2.12:0.13.1在使用上面的命令启动Spark之后,我们根本无法使用Spark。对于所有命令(甚至是非Iceberg命令),我们得到的异常如下所示,
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/catalyst/plans/logical/BinaryCommand下面的简单命令也会引发相同的异常。
val df : DataFrame = spark.read.json("/spark-3.1.2-bin-hadoop3.2/examples/src/main/resources/people.json")
df.show()在Spark源代码中,BinaryCommand类属于Spark SQL模块,因此尝试在按下面的方式启动shell时显式添加Spark依赖项,但仍然得到相同的异常。
spark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.2_2.12:0.13.1,org.apache.spark:spark-sql_2.12:3.1.2当我们正常启动spark-shell 时,即不依赖于冰山,那么它就正常工作了。
任何正确方向的指针对故障排除都会很有帮助。
谢谢。
发布于 2022-04-08 07:26:08
我们正在使用错误的冰山版本,选择星火3.2冰山罐,但运行Spark3.1。在使用正确的依赖版本(即3.1)之后,我们能够使用Iceberg启动shell。另外,不需要使用包来指定org.apache.spark火花罐,因为所有这些都将在类路径上。
spark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.1_2.12:0.13.1https://stackoverflow.com/questions/71783634
复制相似问题