gpt4 book ai didi

apache-spark - Spark dataFrame.colaesce(1) 或 dataFrame.reapartition(1) 似乎不起作用

转载 作者:行者123 更新时间:2023-12-04 04:21:24 24 4
gpt4 key购买 nike

我将 Hive 插入到创建新 Hive 分区的查询中。我有两个名为服务器和日期的 Hive 分区。现在我使用以下代码执行插入到查询中并尝试保存它

DataFrame dframe = hiveContext.sql("insert into summary1 partition(server='a1',date='2015-05-22') select from sourcetbl bla bla"); 
//above query creates orc file at /user/db/a1/20-05-22
//I want only one part-00000 file at the end of above query so I tried the following and none worked
drame.coalesce(1).write().format("orc").mode(SaveMode.OverWrite).saveAsTable("summary1"); OR

drame.repartition(1).write().format("orc").mode(SaveMode.OverWrite).saveAsTable("summary1"); OR

drame.coalesce(1).write().format("orc").save("/user/db/a1/20-05-22",SaveMode.OverWrite); OR

drame.repartition(1).write().format("orc").save("/user/db/a1/20-05-22",SaveMode.OverWrite); OR

无论我使用合并还是重新分区,上面的查询都会在/user/db/a1/20-05-22 位置创建大约 200 个大约 20 MB 的小文件。在使用 Hive 时,出于性能原因,我只需要一个 part0000 文件。我在想如果我调用 coalesce(1) 那么它将创建最终的一个部分文件,但它似乎没有发生。我错了吗?

最佳答案

重新分区管理在执行 Spark 作业时将文件分成多少 block ,但文件的实际保存由 Hadoop 集群管理。

或者我是这么理解的。您还可以在此处看到回答的相同问题:http://mail-archives.us.apache.org/mod_mbox/spark-user/201501.mbox/%3CCA+2Pv=hF5SGC-SWTwTMh6zK2JeoHF1OHPb=WG94vp2GW-vL5SQ@mail.gmail.com%3E

不过这应该无关紧要,为什么要在单个文件上设置?如果它只是针对您自己的系统,getmerge 将为您将其编译在一起。

关于apache-spark - Spark dataFrame.colaesce(1) 或 dataFrame.reapartition(1) 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346647/

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