【发布时间】:2018-08-24 05:41:15
【问题描述】:
我编写了结合 spark 数据框的 Scala 代码。 起初,它正在工作(仅当我不使用 if else 语句时)。虽然它不是一个干净的代码,但想知道我该如何转换它?
其次,if/else语句不起作用,我怎样才能将python中的值附加到上面的变量中,然后将其用作数据框?
对不起,我是 Scala 的新手。
%scala
for(n <- Scalaconfigs){
var bulkCopyMetadata = new BulkCopyMetadata
val sourceTable = n(0)
val targetTable = n(1)
println(sourceTable)
println(targetTable)
val df = spark.sql(s"SELECT * FROM ${sourceTable}")
if (sourceTable == "est.Values"){
val vs1 = df.withColumn("Duration", 'Duration.cast("double")).withColumn("StartUTC", 'StartTimeUTC.cast("bigint")).select('DeviceID, 'DeviceType, 'StartUTC, 'Duration as 'Duration)
}
else if (sourceTable == "est.tests"){
val vs1 = df.withColumn("DateUTC", 'DateUTC.cast("Timestamp")).select('ID, 'DateUTC as 'DateUTC)
}
val writeConfig = Config(Map(
"url" -> url,
"databaseName" -> databaseName,
"dbTable" -> targetTable,
"user" -> user,
"password" -> password,
"connectTimeout" -> "5",
"bulkCopyBatchSize" -> "100000",
"bulkCopyTableLock" -> "true",
"bulkCopyTimeout" -> "600"
))
vs1.bulkCopyToSqlDB(writeConfig)
//vs1 doesnot take value, when i use if else statements
}
找不到变量“vs1”。那个错误。我知道它是因为变量 vs1 是在 if else 块中定义的,但是我如何在上面使用它。我试过把它放在上面,但我不确定数据类型。
【问题讨论】:
标签: scala apache-spark apache-spark-sql