为什么spark.implicits._在将任何RDD转换为DS而不是常规导入之前就被嵌入



我正在学习火花数据集并检查如何将RDD转换为数据集。

为此,我得到了以下代码:

val spark = SparkSession
      .builder
      .appName("SparkSQL")
      .master("local[*]")
      .getOrCreate()
    val lines = spark.sparkContext.textFile("../myfile.csv")
    val structuredData = lines.map(mapperToConvertToStructureData)
    import spark.implicits._
    val someDataset = structuredData.toDS

在这里,如果我们要将RDD转换为数据集,我们需要 import spark.implicits ._ 在转换之前。

为什么这是在转换之前写的?我们可以像在文件顶部一样使用此导入作为常规导入?

在类org.apache.spark.sql.SparkSession的实例中, spark因此,该实例必须在从中导入之前。

spark隐含需要与数据集一起使用,因为这是找到编码器所需的所有隐式函数和类的位置。所有转换到数据集都需要编码器。查看文档,您将在所有数据集转换中看到,您具有" A : Encoder"绑定或编码器隐式。

在scala中,通常这隐含在{objects}中,但是在火花中,它们在 sparkSession class中,所以除非您没有实例,否则您无法导入它们。

最新更新