首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spark和partitionby子句向现有的Hive表添加新数据

如何使用Spark和partitionby子句向现有的Hive表添加新数据
EN

Stack Overflow用户
提问于 2018-05-10 12:46:36
回答 1查看 3.5K关注 0票数 0

我有一个使用partitionBy写到Hive表的数据文件

代码语言:javascript
复制
val df = Seq(
("day1", 1),
("day1", 2),
("day1", 3),
("day1", 4)
).toDF("day","id")

df.write.partitionBy("day").format("parquet").saveAsTable("mydb.day_table")

spark.sql("select * from mydb.day_table").show
+---+----+
| id| day|
+---+----+
|  1|day1|
|  2|day1|
|  3|day1|
|  4|day1|
+---+----+

spark.sql("show create table mydb.day_table").show(false)
+---------------------------------------------------------------------------------------------------------------------------------------+
|createtab_stmt                                                                                                                         |
+---------------------------------------------------------------------------------------------------------------------------------------+
|CREATE TABLE `mydb`.`day_table` (`id` INT, `day` STRING)
USING parquet
OPTIONS (
  `serialization.format` '1'
)
PARTITIONED BY (day)
|
+---------------------------------------------------------------------------------------------------------------------------------------+

如果我创建了另一个dataframe,并且希望通过保持分区完整地将这个数据帧的内容附加到同一个表中,那么我该如何做呢?这样做对吗?

代码语言:javascript
复制
val df2 = Seq(
("day2",5),
("day2",6)
).toDF("day","id")


df2.write.mode("append").partitionBy("day").format("parquet").saveAsTable("mydb.day_table")

我希望在输出下面,但我希望表被day分区,即使在我一直将数据附加到原始表之后。

代码语言:javascript
复制
spark.sql("select * from mydb.day_table").show(false)
+---+----+
|id |day |
+---+----+
|1  |day1|
|2  |day1|
|3  |day1|
|4  |day1|
|5  |day2|
|6  |day2|
+---+----+

我在使用Scala和。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-10 16:35:11

你必须使用星火数据框架api的

1)分区

2)saveAsTable

代码语言:javascript
复制
df.\
write.\
format("parquet").\
mode(org.apache.spark.sql.SaveMode.Append).\
partitionBy("first").\
saveAsTable("example")

我知道你也是这么做的。但你没有发布任何错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50273325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档