我正在学习火花数据集并检查如何将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
中,所以除非您没有实例,否则您无法导入它们。