异常信息:
java.lang.NoSuchMethodError: scala.Product.$init$
事情的经过是这样的:
1. 使用spark最新版本2.2.0测试SparkSql的DataFrame及Dataset的时候抛出这个异常。
2. 开始怀疑是scala版本问题,于是没多想安装了scala最新版本2.1.2.4,然而依然报这个错。
3. 郁闷好久,甚至去研究cass class原理(因为cass class是自动实现scala.Product接口的,报错信息也在这里),但是问题还是没解决。
4. 但是直觉上感觉还是scala版本问题,最后抱着破罐子破摔再失败一次也无妨的态度将scala的版本换为2.1.1.8,问题居然解决了!!!<此处是脏话>,没想到scala版本过高也不行。
然后再次打开官网,看到这样的文字:
Spark runs on both Windows and UNIX-like systems (e.g. Linux, Mac OS). It’s easy to run locally on one machine — all you need is to have java installed on your system PATH, or the JAVA_HOME environment variable pointing to a Java installation.
Spark runs on Java 8+, Python 2.7+/3.4+ and R 3.1+. For the Scala API, Spark 2.2.0 uses Scala 2.11. You will need to use a compatible Scala version (2.11.x).
Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0.
Note that support for Scala 2.10 is deprecated as of Spark 2.1.0, and may be removed in Spark 2.3.0.
-----点击打开链接
教训啊,如果一开始怀疑是版本问题就去官网看看多好。
希望能给同仁带来帮助。