【发布时间】:2019-07-03 22:16:01
【问题描述】:
我正在使用 Databricks 连接到 EventHub,其中来自 EventHub 的每条消息都可能非常不同。
在消息中,我有一个正文和一个 ID。
我正在寻找性能,所以我避免收集数据或进行不必要的处理,我也想通过分区并行保存。但是我不确定如何以正确的方式做到这一点。
我想将每个 ID 的正文分批附加到不同的 AND SPECIFIC 表中,ID 将为我提供我需要保存在正确表中的信息。所以为了做到这一点,我一直在尝试两种方法:
- 分区:Repartition(numPartitions, ID) -> ForeachPartition
- 分组:groupBy('ID').apply(myFunction) #@pandas_udf GROUPED_MAP
方法 1 对我来说看起来不是很吸引人,重新分区过程看起来很不必要,我在文档中看到即使我将列设置为分区,它也可能会在单个分区中保存该列的许多 id .它只保证与该 id 相关的所有数据都在分区中而不是拆分
方法 2 迫使我从 pandas_udf 输出,这是一个与输入模式相同的数据帧,这不会发生,因为我将 eventthub 消息从 CSV 转换为数据帧以便将其保存到表中。我可以返回我收到的相同数据帧,但这听起来很奇怪。
有什么我没有看到的好方法吗?
【问题讨论】:
标签: python-3.x pyspark azure-databricks