Scala 如何基于多个列重新划分数据帧?

Scala 如何基于多个列重新划分数据帧?,scala,apache-spark,Scala,Apache Spark,我有一个数据框:yearDF,包含以下列:名称、id\u编号、位置、源\u系统\u名称、期间\u年份 如果要基于列重新划分数据帧,我将执行以下操作: yearDF.repartition('source_system_name') 我有一个变量:val partition\u columns=“source\u system\u name,period\u year” 我试着这样做: val dataDFPart = yearDF.repartition(col(${prtn_String_c

我有一个数据框:yearDF,包含以下列:
名称、id\u编号、位置、源\u系统\u名称、期间\u年份

如果要基于列重新划分数据帧,我将执行以下操作:

yearDF.repartition('source_system_name')
我有一个变量:
val partition\u columns=“source\u system\u name,period\u year”

我试着这样做:

val dataDFPart = yearDF.repartition(col(${prtn_String_columns}))
但是我得到一个编译错误:
无法解析符号$


是否可以根据
分区列中的值重新分区数据框:
yearDF

在Scala/Spark中有三种重新分区功能的实现:

def repartition(partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int, partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int): Dataset[T]
因此,为了在多个列上重新分区,您可以尝试用逗号分割字段,并对其使用Scala的vararg运算符,如下所示:

val columns = partition_columns.split(",").map(x => col(x))
yearDF.repartition(columns: _*)
另一种方法是逐个调用每个列:

yearDF.repartition(col("source_system_name"), col("period_year"))

Scala/Spark中的重新分区功能有三种实现:

def repartition(partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int, partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int): Dataset[T]
因此,为了在多个列上重新分区,您可以尝试用逗号分割字段,并对其使用Scala的vararg运算符,如下所示:

val columns = partition_columns.split(",").map(x => col(x))
yearDF.repartition(columns: _*)
另一种方法是逐个调用每个列:

yearDF.repartition(col("source_system_name"), col("period_year"))

我尝试了vararg方法,结果显示:类型不匹配,应为:Seq[Column],actual:Array[String我尝试了vararg方法,结果显示:类型不匹配,应为:Seq[Column],actual:Array[String