Dav*_*rio 1 apache-spark apache-spark-sql
我正在使用Spark 2.0.2.我有一个在其上有别名的DataFrame,我希望能够检索它.我想要的简化示例如下.
def check(ds: DataFrame) = {
assert(ds.count > 0, s"${df.getAlias} has zero rows!")
}
Run Code Online (Sandbox Code Playgroud)
上面的代码当然失败了,因为DataFrame没有getAlias函数.有没有办法做到这一点?
你可以尝试这样的东西,但我不会到目前为止声称它是支持的:
Spark <2.1:
import org.apache.spark.sql.catalyst.plans.logical.SubqueryAlias
import org.apache.spark.sql.Dataset
def getAlias(ds: Dataset[_]) = ds.queryExecution.analyzed match {
case SubqueryAlias(alias, _) => Some(alias)
case _ => None
}
Run Code Online (Sandbox Code Playgroud)Spark 2.1+:
def getAlias(ds: Dataset[_]) = ds.queryExecution.analyzed match {
case SubqueryAlias(alias, _, _) => Some(alias)
case _ => None
}
Run Code Online (Sandbox Code Playgroud)用法示例:
val plain = Seq((1, "foo")).toDF
getAlias(plain)
Run Code Online (Sandbox Code Playgroud)
Option[String] = None
Run Code Online (Sandbox Code Playgroud)
val aliased = plain.alias("a dataset")
getAlias(aliased)
Run Code Online (Sandbox Code Playgroud)
Option[String] = Some(a dataset)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
732 次 |
最近记录: |