gpt4 book ai didi

apache-spark - 如何在没有数据框的情况下在spark中执行列表达式

转载 作者:行者123 更新时间:2023-12-03 07:07:40 27 4
gpt4 key购买 nike

如果我只使用 Literal (没有数据框列),有什么方法可以评估我的 Column 表达式。

例如,类似:

val result: Int = someFunction(lit(3) * lit(5))
//result: Int = 15

import org.apache.spark.sql.function.sha1
val result: String = someFunction(sha1(lit("5")))
//result: String = ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4

我能够使用数据框进行评估

val result = Seq(1).toDF.select(sha1(lit("5"))).as[String].first
//result: String = ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4

但是有没有办法在不使用数据帧的情况下获得相同的结果?

最佳答案

要计算文字列,您可以 convert itExpressioneval不提供输入行:

scala> sha1(lit("1").cast("binary")).expr.eval()
res1: Any = 356a192b7913b04c54574d18c28d46e6395428ab

只要函数是UserDefinedFunction,它就会以相同的方式工作:

scala> val f = udf((x: Int) => x)
f: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,IntegerType,Some(List(IntegerType)))

scala> f(lit(3) * lit(5)).expr.eval()
res3: Any = 15

关于apache-spark - 如何在没有数据框的情况下在spark中执行列表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51210178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com