spark-structured-streaming - 具有事件中心和 ADLS g2 的 Databricks Delta Lake 结构化流性能
问题描述
我目前正在尝试使用 Azure Databricks 上的 Delta Lake 处理每天大约 4TB 的遥测数据。
我有一个专用的事件中心集群,事件被写入其中,我正试图通过数据块结构化流将这个 eventthub 摄取到 delta Lake 中。有一个相对简单的作业,它获取事件中心输出并提取一些列,然后使用流写入器写入 ADLS gen2 存储,该存储安装到按日期和小时分区的 DBFS。
最初在一个干净的增量表目录上,性能跟上事件中心每秒写入大约 18k 条记录的速度,但几个小时后,它下降到每秒 10k 条记录,然后进一步直到它似乎稳定在每秒大约 3k 条记录。
使用不同的分区方案在数据块方面尝试了一些事情,白天的时间分区似乎在最长的时间内表现最好,但在这种情况下暂停并重新启动后,性能下降并开始落后于事件中心。
寻找一些关于我如何能够保持表现的建议。
解决方案
我曾经遇到过类似的问题,不是 Delta 湖,而是 Spark Azure EventHubs 连接器。它非常慢并且消耗了大量资源。
我通过切换到 Azure EventHubs 的 Kafka 接口解决了这个问题:https ://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-for-kafka-ecosystem-overview
设置起来有点棘手,但几个月来一直运行良好。
推荐阅读
- sass - SCSS/SASS 删除输出中的 CSS 行?
- c++ - 使用 < 从文本文件中读取参数
- android - 我正在尝试在 Android Native-activity 中使用 opengles 绘制对象,但我什么也没看到
- flutter - 运行颤振医生时无法接受 android 许可证
- html - 响应式移动导航 css
- python - 在数据框中为所有列项创建单独的类变量
- python - 计算用于按 QuickSort、Python 排序的比较次数
- vue.js - 如何在 Vuejs 中并排显示 vx-cards
- javascript - 当我要将地图索引传递给我的组件时,对未定义参数的任何帮助
- python - 如何使用 exchangelib 按 email_address 域过滤?