gpt4 book ai didi

apache-spark - 使用 Spark SQL 将数据插入静态 Hive 分区

转载 作者:行者123 更新时间:2023-12-04 03:58:10 25 4
gpt4 key购买 nike

我无法弄清楚如何使用 Spark SQL 将数据插入 Hive 表的静态分区。我可以使用这样的代码写入动态分区:

df.write.partitionBy("key").insertInto("my_table")

但是,我不知道如何将数据插入静态分区。这意味着,我想定义应该写入整个 DataFrame 的分区,而无需将列添加到 DataFrame。

我看到中提到的静态分区
InsertIntoHiveTable类,所以我想它是受支持的。是否有公共(public) API 可以做我想做的事?

最佳答案

您可以使用

DataFrame tableMeta = sqlContext.sql(String.format("DESCRIBE FORMATTED %s", tableName));
String location = tableMeta.filter("result LIKE 'Location:%'").first().getString(0);

并使用正则表达式来获取您的表分区。获得表位置后,您可以轻松构建分区位置,例如
String partitionLocation = location + "/" + partitionKey

(partitionKey 类似于 dt=20160329/hr=21)

然后,您可以写入该路径
df.write.parquet(partitionLocation)

(在我构建数据框的情况下,我不包含分区列。不确定包含分区列时是否有任何错误)

关于apache-spark - 使用 Spark SQL 将数据插入静态 Hive 分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com