我试图了解我在工作区经常听到的一种方法的利弊。
在向配置单元表(insertinto)写入数据时,spark执行以下操作
写入暂存文件夹
使用输出提交程序将数据移动到配置单元表。
现在我看到有人抱怨说,上面的两步方法很耗时,因此诉诸于
1) Write files directly to HDFS
2) Refresh metastore for Hive
我看到人们报告说这种方法有很大的改进。
但不知何故,我还不相信这是安全和正确的方法。这难道不是一种自相残杀的交易吗(全表写入或不写入)
如果向hdfs写入文件的执行器崩溃了怎么办?我看不出有什么办法能完全恢复那些半途而废的写作。
我也认为spark会这么做,如果这是正确的方式,不是吗?
我的问题有效吗?你认为上述方法有什么好处吗?请评论。
1条答案
按热度按时间smdnsysy1#
这不是100%正确的原因,因为在配置单元v3中,您只能使用配置单元驱动程序访问配置单元数据,以便不破坏新的事务机器。
即使您使用的是hive2,您至少应该记住,一旦升级,就不能直接访问数据。