繁体   English   中英

通过子句参数化spark分区

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM