我有以下功能:
def getData(spark: SparkSession,
indices: Option[String]): Option[DataFrame] = {
indices.map{
ind =>
spark
.read
.format("org.elasticsearch.spark.sql")
.load(ind)
}
}
Run Code Online (Sandbox Code Playgroud)
此函数返回Option[DataFrame].
然后我想使用这个函数如下:
val df = getData(spark, indices)
df.persist(StorageLevel.MEMORY_AND_DISK)
Run Code Online (Sandbox Code Playgroud)
当然最后两行代码不会编译,因为df可能是None.None在Scala中处理输出的惯用方法是什么?我想抛出异常并停止程序,如果df是None.否则我想要persist它.
如果你关心None我在这里使用简单的模式匹配:
df match {
case None => throw new RuntimeException()
case Some(dataFrame) => dataFrame.persist(StorageLevel.MEMORY_AND_DISK)
}
Run Code Online (Sandbox Code Playgroud)
但如果你不在乎,只需使用foreach:
df.foreach { dataFrame =>
dataFrame.persist(StorageLevel.MEMORY_AND_DISK)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |