对于输入字符串ea

时间:2017-08-29 17:34:05

标签: java scala apache-spark java-9

我有一个示例spark作业,我可以成功地在java 8上运行但是当我在java 9上运行相同的程序时,它失败了NumberFormatException

SparkConf conf = new SparkConf();
conf.setMaster("local[*]").setAppName("java 9 example");
SparkSession session = SparkSession.builder().config(conf).getOrCreate();
Dataset<Row> ds = session.read().text("<xyz path>");
System.out.println(ds.count());

例外详细信息:

  

线程“main”中的异常java.lang.NumberFormatException:用于输入   string:“ea”at   java.base / java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.base / java.lang.Integer.parseInt(Integer.java:695)at   java.base / java.lang.Integer.parseInt(Integer.java:813)at   scala.collection.immutable.StringLike $ class.toInt(StringLike.scala:229)     在scala.collection.immutable.StringOps.toInt(StringOps.scala:31)at   org.apache.spark.SparkContext.warnDeprecatedVersions(SparkContext.scala:353)     在org.apache.spark.SparkContext。(SparkContext.scala:186)at   org.apache.spark.SparkContext $ .getOrCreate(SparkContext.scala:2313)     在   org.apache.spark.sql.SparkSession $生成器$$ anonfun $ 7.适用(SparkSession.scala:868)     在   org.apache.spark.sql.SparkSession $生成器$$ anonfun $ 7.适用(SparkSession.scala:860)     在scala.Option.getOrElse(Option.scala:120)at   org.apache.spark.sql.SparkSession $ Builder.getOrCreate(SparkSession.scala:860)     在com.ts.spark.session.TestApp.main(TestApp.java:18)

Maven spark依赖项:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.1.0</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>2.1.0</version>
</dependency>

Java详细信息:

  

java版“9-ea”
  Java(TM)SE运行时环境(版本9-ea + 156)
  Java HotSpot(TM)64位服务器VM(构建9-ea + 156,混合模式)

在java 9上设置spark需要遵循的其他步骤吗?谢谢!

2 个答案:

答案 0 :(得分:6)

似乎scala StringLike被调用来解析&#34; ea&#34; (&#34; 9-ea&#34;的一部分)作为整数。使用的JDK 9版本是旧版本,新版本已删除&#34; -ea&#34;随着JDK 9发布候选人的临近。因此,获取最新的JDK 9下载(jdk-9 + 181)并向Spark提交一个错误,以检查解析版本字符串的代码。版本字符串方案的一个很好的参考是JEP 223(http://openjdk.java.net/jeps/223)。

答案 1 :(得分:4)

Spark似乎不支持版本号中的非Int值(至少对于支持的JVM),非早期访问版本不会发生这种情况,ea字符串。 一旦Java9正确发布,它将可能正确运行。