Azure Synapse Analytics的文档提到了两种使用Synapse Analytics中的Apache Spark池将数据读/写到Azure Data Lake Storage Gen 2的方法。
1.使用ADLS存储路径直接阅读文件
adls_path = "abfss://<containername>@<accountname>.dfs.core.windows.net/<filepath>"
df = spark.read.format("csv").load(adls_path)
1.使用mssparkutils创建挂载点并使用synfs路径阅读文件
mssparkutils.fs.mount(
"abfss://<containername>@<accountname>.dfs.core.windows.net",
"/data",
{"linkedService":"<accountname>"}
)
synfs_path = "synfs:/<jobid>/data/<filepath>"
df = spark.read.format("csv").load(synfs_path)
这两种方法的区别是什么?什么时候应该更喜欢使用挂载点?
1条答案
按热度按时间czq61nw11#
这两种方法的主要区别在于Apache Spark池如何访问和管理数据。
使用ADLS存储路径直接读取数据时,将直接从存储帐户访问数据,而无需任何中间缓存或处理。如果需要访问存储在与Synapse Analytics工作区关联的帐户或容器之外的帐户或容器中的数据,或者需要对Synapse文件系统(synfs)不支持的数据执行操作,则此方法非常适用。
另一方面,使用装载点时,您将创建一个Map到ADLS存储帐户的虚拟文件系统。这样,您就可以使用synfs路径访问数据,就像数据本地存储在Synapse工作区中一样。使用装载点的优点是,您可以利用Synapse文件系统功能,如元数据管理、缓存和访问控制。以优化数据处理并提高性能。
一般来说,当需要对同一数据执行频繁的读写操作,或者需要从多个Spark池或作业访问数据时,您应该更喜欢使用挂载点,这允许您利用Synapse文件系统的缓存和性能优化特性,但是,如果您只需要访问数据一次或者执行一个简单的操作,使用ADLS存储路径直接读取数据可能更方便。