【发布时间】:2020-05-06 16:25:42
【问题描述】:
我正在使用 try 和 catch 方法在使用以下代码读取 Dataframe 中的文件时捕获异常
import scala.io.StdIn
import scala.util.{Try, Success, Failure}
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
val filename = "s3a://bucketname/moving/file.csv"
def CustomSchemaDataFrame(fileName: String):Try[DataFrame] = {
try {
val df_custom_schema = spark.read.format("csv").option("header", "true").load(filename)
Success(df_custom_schema)
} catch {
case unknown: Exception => {
println(s"Unknown exception: $unknown")
Failure(unknown)
}
}
}
CustomSchemaDataFrame(filename) match {
case Success(df_custom_schema) => {
println("File Read Successfully")
df_custom_schema.printSchema()
df_custom_schema.show(true)
}
case Failure(ex) => {
println("error code", ex)
}
}
我接下来要执行的是进一步导出 df_custom_schema 外部匹配以执行外部匹配循环操作。
下面是这样的
CustomSchemaDataFrame(filename) match {
case Success(df_custom_schema) => {
println("File Read Successfully")
df_custom_schema.printSchema()
df_custom_schema.show(true)
val custom_schema = df_custom_schema
}
case Failure(ex) => {
println("error code", ex)
}
}
custom_schema.printSchema()
当我在里面使用上面的 custom_schema.printSchema() 时,它的工作正常,但是当我试图在它的抛出错误之外访问它时。有没有办法在匹配情况下访问值。因为我想对这个数据框执行其他几个操作。
问候 鲯鳅
【问题讨论】:
-
抛出哪个错误?
标签: scala apache-spark apache-spark-sql