4

我是 Spark 的新手。我想将数据帧数据写入配置单元表。Hive 表在多列上分区。通过 Hivemetastore 客户端,我获取了分区列,并将其作为数据帧写入方法中的 partitionby 子句中的变量传递。

var1="country","state" (Getting the partiton column names of hive table)
dataframe1.write.partitionBy(s"$var1").mode("overwrite").save(s"$hive_warehouse/$dbname.db/$temp_table/")

当我执行上述代码时,它给了我错误分区“国家”、“国家”不存在。我认为它将“国家”、“州”作为字符串。

你能帮帮我吗?

4

1 回答 1

9

partitionBy 函数接受一个varargs非列表。您可以将其用作

dataframe1.write.partitionBy("country","state").mode("overwrite").save(s"$hive_warehouse/$dbname.db/$temp_table/")

或者在 scala 中,您可以将列表转换为可变参数,例如

val columns = Seq("country","state")
dataframe1.write.partitionBy(columns:_*).mode("overwrite").save(s"$hive_warehouse/$dbname.db/$temp_table/")
于 2018-07-28T07:31:41.750 回答