Scala重新分区无法解析符号

时间:2018-03-26 22:50:40

标签: scala apache-spark spark-dataframe amazon-emr

我正在尝试将我的数据框保存为每天一个分区的镶木地板文件。所以试着使用日期列。但是,我想为每个分区写一个文件,所以使用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/")

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

1 个答案:

答案 0 :(得分:2)

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

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

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