我正在使用开源版本将大量数据写入Databricks Delta lake,该版本在AWS EMR上运行,S3作为存储层。我正在使用EMRFS。
为了提高性能,我每隔一段时间就会压缩和清空表:
spark.read.format("delta").load(s3path)
.repartition(num_files)
.write.option("dataChange", "false").format("delta").mode("overwrite").save(s3path)
t = DeltaTable.forPath(spark, path)
t.vacuum(24)
我已经阅读了这篇文章火花:作业之间的长延迟,这似乎表明它可能与镶木地板有关?但是我在增量端没有看到任何选项来调整任何参数。
在Deltalake有这个的存档
问题陈述:Deltalake真空作业需要太长时间才能完成,因为下面的文件删除逻辑是顺序的。deltalake(v0.6.1)的已知错误参考:https://github.com/delta-io/delta/issues/395
解决方案:Deltalake 团队已解决此问题
对于 v0.6.x
许多组织在生产中使用0.6.x
https://swapnil-chougule.medium.com/delta-with-improved-vacuum-patch-381378e79d1d
通过这一更改,在真空作业期间支持并行删除文件。它加快了进程
我还观察到Delta真空指令相当慢。开源开发者在回购中进行AWS特定的优化可能会受到限制,因为这个库是跨平台的(需要在所有云上工作)。
我注意到局部真空甚至很慢。您可以克隆Delta repo,在您的本地机器上运行测试套件,并亲自查看。
即使您使用的是AWS CLI,删除S3中存储的数十万个文件也很慢。您应该看看是否可以重构压缩操作,以创建更少需要清空的文件。
假设您的目标是创建1GB文件。也许你有15000个单曲文件和20000个小文件。现在,您的压缩操作正在重写所有数据(因此,压缩后需要对所有35000个原始文件进行真空处理)。尝试重构代码,使其只压缩20000个小文件(因此真空操作只需要删除20000个文件)。
真正的解决方案是构建针对 AWS 优化的真空命令。Delta Lake 需要与所有流行的云和本地文件系统一起工作。创建一个开源库应该很容易,该库读取事务日志,确定需要删除的文件,进行高性能文件删除 API 调用,然后将符合 Delta 标准的事务日志写出条目。也许我会让那个回购;)
下面是关于真空命令的更多信息。作为一个附带说明,您可以在压缩时使用合并
而不是repartition
,如本文所述。
编辑:三角洲问题:https://github.com/delta-io/delta/issues/395和公关:https://github.com/delta-io/delta/pull/416
我需要在数据库中创建一个现有的三角洲湖表上的抽象。是否可以在Spark中基于Delta Lake表创建SQL Server类型的SQL视图?
我的Mongo Collection有大约2000个文档。当使用MongoTemplate find()方法和空查询(即我需要集合中的所有文档)和实体类、集合名称时,以列表的形式返回数据需要一分钟以上。有人能帮我让查询返回更快吗??下面是我正在使用的查询。
我是火花三角洲湖的新手。我正在创建三角洲表顶部的配置单元表。我有必要的jars delta-core-shaded-assembly2.11-0.1.0.jar,hive-delta2.11-0.1.0.jar;在配置单元类路径中。设置以下属性。 但是在创建表时 两个表的架构匹配。堆栈详细信息:Spark:2.4.4Hive:1.2.1 任何帮助都是非常感谢的。提前谢了。
在我们的kafka broker设置中,GC平均需要20毫秒,但随机增加到1-2秒。极端情况持续9秒。这种情况的发生频率相当随机。平均每天发生15次。我尝试过使用GCEasy,但没有给出任何见解。我的内存使用率为20%,但进程仍然使用交换,尽管内存可用。感谢您对如何将其最小化的任何意见 JVM选择: GC日志:
此代码用于生成excel报告。有15列,如果记录数在1000左右,生成excel表需要近10-15分钟。上面的代码有什么问题吗?如何提高性能(Excel报告生成时间减少)?
我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语