如何在Spark中用nscala_time计算时差
How to calculate time difference with nscala_time in Spark
我正在尝试计算 T1 和 T2 的时差。
我在 spark-shell 中的代码如下:
scala> import com.github.nscala_time.time.Imports._
import com.github.nscala_time.time.Imports._
scala> import org.joda.time.DateTime
import org.joda.time.DateTime
scala> val T1 = DateTime.parse("2014-10-12T10:32:32")
T1: org.joda.time.DateTime = 2014-10-12T10:32:32.000+08:00
scala> val T2 = DateTime.parse("2014-10-12T10:33:32")
T2: org.joda.time.DateTime = 2014-10-12T10:33:32.000+08:00
scala> val diff = (T1 to T2).millis/1000
diff: Long = 60
一切正常。
所以我用 sbt spark-submit 相同的代码:
我的依赖文件如下:
提交代码:
spark-shell --class "YourApp" --jars /usr/local/spark/lib_third/nscala-time-master/target/scala-2.10/nscala-time_2.10-2.15.0-SNAPSHOT.jar ~/Spark_nscala2/target/scala-2.10/YourApp_2.10-1.0.jar
但是,出错了:
Exception in thread "main" java.lang.NoSuchMethodError: com.github.nscala_time.time.Imports$.RichReadableInstant(Lorg/joda/time/ReadableInstant;)Lcom/github/nscala_time/time/RichReadableInstant;
at YourApp$.main(YourApp.scala:15)
at YourApp.main(YourApp.scala)
异常说明问题出自这句话:
val diff = (T1 to T2).millis/1000
这对我来说没有意义,相同的代码在 spark-shell 中有效,但在提交时失败。
有人可以告诉我问题出在哪里吗?提前致谢!
尝试将第三方 jar 添加到 --driver-class-path 以及 --jars
我弄明白了myself.I 尝试了另一个版本的nscala_time jar,并相应地更改了依赖关系,问题已解决。
我正在尝试计算 T1 和 T2 的时差。 我在 spark-shell 中的代码如下:
scala> import com.github.nscala_time.time.Imports._
import com.github.nscala_time.time.Imports._
scala> import org.joda.time.DateTime
import org.joda.time.DateTime
scala> val T1 = DateTime.parse("2014-10-12T10:32:32")
T1: org.joda.time.DateTime = 2014-10-12T10:32:32.000+08:00
scala> val T2 = DateTime.parse("2014-10-12T10:33:32")
T2: org.joda.time.DateTime = 2014-10-12T10:33:32.000+08:00
scala> val diff = (T1 to T2).millis/1000
diff: Long = 60
一切正常。
所以我用 sbt spark-submit 相同的代码:
我的依赖文件如下:
提交代码:
spark-shell --class "YourApp" --jars /usr/local/spark/lib_third/nscala-time-master/target/scala-2.10/nscala-time_2.10-2.15.0-SNAPSHOT.jar ~/Spark_nscala2/target/scala-2.10/YourApp_2.10-1.0.jar
但是,出错了:
Exception in thread "main" java.lang.NoSuchMethodError: com.github.nscala_time.time.Imports$.RichReadableInstant(Lorg/joda/time/ReadableInstant;)Lcom/github/nscala_time/time/RichReadableInstant;
at YourApp$.main(YourApp.scala:15)
at YourApp.main(YourApp.scala)
异常说明问题出自这句话:
val diff = (T1 to T2).millis/1000
这对我来说没有意义,相同的代码在 spark-shell 中有效,但在提交时失败。 有人可以告诉我问题出在哪里吗?提前致谢!
尝试将第三方 jar 添加到 --driver-class-path 以及 --jars
我弄明白了myself.I 尝试了另一个版本的nscala_time jar,并相应地更改了依赖关系,问题已解决。