Scala-找不到类型为Scala.Tuple5的即时转换器
我有一些行代码:Scala-找不到类型为Scala.Tuple5的即时转换器,scala,jodatime,Scala,Jodatime,我有一些行代码: import org.joda.time._ import org.joda.time.format._ val sampleDate = new DateTime(2015, 1, 1, 0, 0) 所以我得到一个错误: java.lang.IllegalArgumentException: No instant converter found for type: scala.Tuple5 at org.joda.time.convert.ConverterMana
import org.joda.time._
import org.joda.time.format._
val sampleDate = new DateTime(2015, 1, 1, 0, 0)
所以我得到一个错误:
java.lang.IllegalArgumentException: No instant converter found for type: scala.Tuple5
at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:169)
at org.joda.time.DateTime.<init>(DateTime.java:168)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:19)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:24)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:26)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:28)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:30)
at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:32)
at $iwC$$iwC$$iwC$$iwC.<init>(<console>:34)
at $iwC$$iwC$$iwC.<init>(<console>:36)
at $iwC$$iwC.<init>(<console>:38)
at $iwC.<init>(<console>:40)
at <init>(<console>:42)
at .<init>(<console>:46)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:852)
at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1125)
at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:674)
at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:705)
at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:669)
at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:828)
at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:873)
at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:785)
at org.apache.spark.repl.SparkILoop.processLine$1(SparkILoop.scala:628)
at org.apache.spark.repl.SparkILoop.innerLoop$1(SparkILoop.scala:636)
at org.apache.spark.repl.SparkILoop.loop(SparkILoop.scala:641)
at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply$mcZ$sp(SparkILoop.scala:968)
at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply(SparkILoop.scala:916)
at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply(SparkILoop.scala:916)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:916)
at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1011)
at org.apache.spark.repl.Main$.main(Main.scala:31)
at org.apache.spark.repl.Main.main(Main.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
谢谢 您的代码适用于joda time版本,但不适用于某些较旧的版本,如:
随着API的改变
答复:
scala> val sampleDate = new DateTime(2015, 1, 1, 0, 0)
warning: Class org.joda.convert.FromString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
warning: Class org.joda.convert.FromString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
sampleDate: org.joda.time.DateTime = 2015-01-01T00:00:00.000+07:00
如果我尝试一些不合适的参数:
scala> val sampleDate = new DateTime(2015, 1, 1, 0)
java.lang.IllegalArgumentException: No instant converter found for type: scala.Tuple4
另外,joda时间罐放在
lib\u managed\jars
文件夹中。所以你可以在那里查看你的版本。我分别有spark-1.2.0和joda-time-2.1.0,所以您至少应该使用spark的1.2.0版本来使用新的API 构造函数不是采用了6个参数而不是5个参数吗?对不起,这是一个构造函数DateTime公共DateTime(int year,int monthOfYear,int dayOfMonth,int hourOfDay,int minuteOfHour)编译器似乎将括号放在一个元组5中,你能粘贴完整的代码部分看看是否有格式错误吗?这是完整的代码,我不知道,我使用spark shell运行scalai认为,你使用的是joda time的旧版本,因为你的代码对我来说是“joda time”%%“joda time”%%“2.7”
scala> val sampleDate = new DateTime(2015, 1, 1, 0, 0)
warning: Class org.joda.convert.FromString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
warning: Class org.joda.convert.FromString not found - continuing with a stub.
warning: Class org.joda.convert.ToString not found - continuing with a stub.
sampleDate: org.joda.time.DateTime = 2015-01-01T00:00:00.000+07:00
scala> val sampleDate = new DateTime(2015, 1, 1, 0)
java.lang.IllegalArgumentException: No instant converter found for type: scala.Tuple4