Scala 如何基于多个列重新划分数据帧?
我有一个数据框:yearDF,包含以下列: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
名称、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