[英]Parameterise spark partition by clause
我正在尝试在现有的Hive分区表中插入DataFrame
。
我想通过分区列进行参数化,但是我当前的方法不起作用:
var partitioncolumn="\"deletion_flag\",\"date_feed\""
df.repartition(37).write.
mode(SaveMode.Overwrite).
partitionBy(partitioncolumn).
insertInto("db.table_name")
我该如何进行这项工作?
由于partitionBy
是用可变参数定义的:
def partitionBy(colNames: String*): DataFrameWriter[T]
它应该是:
var partitioncolumn= Seq("deletion_flag", "date_feed")
df.repartition(37).write.mode(SaveMode.Overwrite).partitionBy(
partitioncolumn: _*
).insertInto("db.table_name")
您可以在其中提供列名的扩展列表。
partitionBy
采用可变数量的参数(即String
)。
def partitionBy(colNames: String*): DataFrameWriter[T]
// ^ this stands for variadic arguments
在Scala中,您可以使用: _*
传递后缀序列,以将其作为参数列表传递。
因此,您可以执行以下操作:
var partitioncolumn= Seq("deletion_flag", "date_feed")
df.repartition(37).write.
mode(SaveMode.Overwrite).
partitionBy(partitioncolumn: _*).
insertInto("db.table_name")
在此问答中还介绍了传递序列作为可变参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.