我有一个简单的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
变量有关。但是我不知道如何解决这个问题。
有人可以帮我解决这个问题吗?
谢谢
您应该为日期时间列定义日期时间格式
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()