如何在Scala中的partitionBy def中传递多个参数?

时间:2017-07-10 03:02:40

标签: scala apache-spark

我目前正在使用spark 2.0,我正在尝试将数据框写为具有多个分区的镶木地板。

我正在尝试在spark shell中执行以下内容。

var partitionNames = "partition1,partition2"

var partition = partitionNames.split(",").map(elem => "\""+ elem + "\"").map(elem => elem.mkString) //"partition1","partition2"

df.write.partitionBy(partition).path("s3://")

当我执行上面的write命令时,它给出了错误,指出数据帧中不存在分区列。

如果我对分区进行硬编码,它会起作用,但是当我作为参数传递它时它不会。

1 个答案:

答案 0 :(得分:0)

这里有两个问题:第一个列名称包含" (这可能不是你想要的),第二个是partitionBy需要varArgs字符串。

在任何情况下,假设分区在其值中包含正确的名称:

df.write.partitionBy(partition: _*).path("s3://")