gpt4 book ai didi

scala - 导入没有 SparkSession 实例的隐式转换

转载 作者:行者123 更新时间:2023-12-04 16:46:23 25 4
gpt4 key购买 nike

我的 Spark 代码充斥着这样的代码

object Transformations {   
def selectI(df:DataFrame) : DataFrame = {
// needed to use $ to generate ColumnName
import df.sparkSession.implicits._

df.select($"i")
}
}

或者
object Transformations {   
def selectI(df:DataFrame)(implicit spark:SparkSession) : DataFrame = {
// needed to use $ to generate ColumnName
import sparkSession.implicits._

df.select($"i")
}
}

我真的不明白为什么我们需要一个 SparkSession 的实例只是为了导入这些隐式转换。我宁愿做类似的事情:
object Transformations {  
import org.apache.spark.sql.SQLImplicits._ // does not work

def selectI(df:DataFrame) : DataFrame = {
df.select($"i")
}
}

这个问题有优雅的解决方案吗?我对隐式的使用不仅限于 $还有 Encoders , .toDF()等等。

最佳答案

I don't really understand why we need an instance of SparkSession just to import these implicit conversions. I would rather like to do something like



因为每 Dataset存在于特定范围内 SparkSession并且单个 Spark 应用程序可以有多个事件 SparkSession .

理论上有些 SparkSession.implicits._可以与 session 实例分开存在,例如:
import org.apache.spark.sql.implicits._   // For let's say `$` or `Encoders`
import org.apache.spark.sql.SparkSession.builder.getOrCreate.implicits._ // For toDF

但它会对用户代码产生重大影响。

关于scala - 导入没有 SparkSession 实例的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984326/

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