关于使用Scala创建jar文件时的org.apache.spark.sql.AnalysisException错误

问题描述 投票:0回答:1

我有一个简单的Scala类,稍后我将对其进行修改以适合某些机器学习模型。

我需要以此创建一个jar文件,因为我将在amazon-emr中运行这些模型。我是这个过程的初学者。因此,我首先测试了是否可以成功导入以下csv文件并通过使用下面提到的Scala类创建一个jar文件来写入另一个文件。

csv文件如下所示,并且其中包含Date列作为变量之一。

+-------------------+-------------+-------+---------+-----+
|               Date|      x1     |    y  |      x2 | x3  |       
+-------------------+-------------+-------+---------+-----+
|0010-01-01 00:00:00|0.099636562E8|6405.29|    57.06|21.55|
|0010-03-31 00:00:00|0.016645123E8|5885.41|    53.54|21.89|
|0010-03-30 00:00:00|0.044308936E8|6260.95|57.080002|20.93|
|0010-03-27 00:00:00|0.124928214E8|6698.46|65.540001|23.44|
|0010-03-26 00:00:00|0.570222885E7|6768.49|     61.0|24.65|
|0010-03-25 00:00:00|0.086162414E8|6502.16|63.950001|25.24| 

数据集链接:https://drive.google.com/open?id=18E6nf4_lK46kl_zwYJ1CIuBOTPMriGgE

我使用intelliJ IDEA创建了一个jar文件。并且成功完成了。

object jar1 {
  def main(args: Array[String]): Unit = {


      val sc: SparkSession = SparkSession.builder()
        .appName("SparkByExample")
        .getOrCreate()

       val data = sc.read.format("csv")
      .option("header","true")
      .option("inferSchema","true")
      .load(args(0))

    data.write.format("text").save(args(1))

  }

}

[此后,我将此jar文件与上面在amazon-s3中提到的csv文件一起上传,并尝试在amazon-emr的群集中运行它。

但是它失败了,我收到以下错误消息:

ERROR Client: Application diagnostics message: User class threw exception: org.apache.spark.sql.AnalysisException: Text data source does not support timestamp data type.;

我确定此错误与数据集中的Date变量有关。但是我不知道如何解决这个问题。

有人可以帮我解决这个问题吗?

谢谢

scala apache-spark intellij-idea jar amazon-emr
1个回答
0
投票

您应该为日期时间列定义日期时间格式

val df = spark.read
  .format("csv")
  .option("header","true")
  .option("inferSchema","true")
  .option("dateFormat", "yyyy-MM-dd HH:mm:ss")
  .load(args(0))
df.show()
© www.soinside.com 2019 - 2024. All rights reserved.