我正在尝试在现有的Hive分区表中插入DataFrame
。
我想通过分区列进行参数化,但我当前的方法不起作用:
var partitioncolumn="\"deletion_flag\",\"date_feed\""
df.repartition(37).write.
mode(SaveMode.Overwrite).
partitionBy(partitioncolumn).
insertInto("db.table_name")
我该如何做到这一点?
答案 0 :(得分:2)
由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")
您可以在其中提供扩展的列名列表。
答案 1 :(得分:0)
partitionBy
采用可变数量的参数(即String
s)。
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")
在Q&A中描述了将序列作为可变参数传递。