gpt4 book ai didi

azure - Spark 处理如何处理来自集群外部的数据(例如 Azure Blob 存储)?

转载 作者:行者123 更新时间:2023-12-02 07:58:33 24 4
gpt4 key购买 nike

我的问题类似于:

Standalone Spark cluster on Mesos accessing HDFS data in a different Hadoop cluster

虽然上面的问题是关于使用spark处理来自不同hadoop集群的数据,但我还想知道spark如何处理来自azure blob存储容器的数据。

根据 Azure 文档 ( https://learn.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-storage ),以下代码用于将数据直接加载到数据帧中:

val df = spark.read.parquet("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")

当对数据帧应用诸如 udf 之类的操作时,完整的数据是否会传输到驱动程序内存,然后在执行器之间分割?

地点在处理过程中是否发挥作用?例如,如果 Spark 集群和数据(在 azure blob 存储容器上或不同的 hadoop 集群上)位于不同的数据中心,那么它是如何处理的?

最佳答案

Is the complete data transfered to the driver memory and then split across executors when actions such as udf are applied on the dataframe?

是的,完整的数据已传输,但未传输到驱动程序。执行器并行读取数据。如果文件很多,则在执行器之间进行分割,大文件由多个执行器并行读取(如果文件格式是可分割的)。

val df = spark.read.parquet("wasbs://@.blob.core.windows.net/")

了解该行代码不会加载任何内容这一点至关重要。稍后当您调用 df.write 或评估 Spark SQL 查询时,将读取数据。如果数据被分区,查询可能能够消除查询不需要的整个分区。

Does locality play a role in how this is processed?

在 Azure 中,非常快的网络弥补了数据和计算分离的问题。

当然,您通常希望 Blob/Data Lake 与 Spark 集群位于同一 Azure 区域。跨区域的数据移动速度较慢,并且按数据导出收费,略低于 0.01 美元/GB。

关于azure - Spark 处理如何处理来自集群外部的数据(例如 Azure Blob 存储)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61012487/

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