Scala 重新分区无法解析符号

Scala repartition cannot resolve symbol

我正在尝试将我的数据框保存为一个镶木地板文件,每天一个分区。所以尝试使用日期列。但是,我想每个分区写一个文件,所以使用 repartition($"date"),但不断出现错误:

这个错误"cannot resolve symbol repartition""value $ is not a member of stringContext"我用的时候,

DF.repartition($"date")
  .write
  .mode("append")
  .partitionBy("date")
  .parquet("s3://file-path/")

这个错误 Type mismatch, expected column, actual string, 当我使用:

DF.repartition("date")
  .write
  .mode("append")
  .partitionBy("date")
  .parquet("s3://file-path/")

然而,这工作正常,没有任何错误。

DF.write.mode("append").partitionBy("date").parquet("s3://file-path/")

我们不能在重新分区中使用日期类型吗?这里有什么问题吗?

要使用 $ 符号代替 col(),您需要先导入 spark.implicitsspark 这里是一个 SparkSession 的实例,因此导入必须在创建 SparkSession 之后完成。一个简单的例子:

val spark = SparkSession.builder.getOrCreate()
import spark.implicits._

此导入还将启用其他功能,例如分别使用 toDF()toDS() 将 RDD 转换为数据集的数据帧。