python - 从 Databrick 文件系统读取文件

标签 python azure pyspark databricks azure-databricks

我使用以下代码从 dbfs 读取 shapefile:

geopandas.read_file("file:/databricks/folderName/fileName.shp")

不幸的是,我无权这样做,并且收到以下错误

DriverError: dbfs:/databricks/folderName/fileName.shp: Permission denied

知道如何授予访问权限吗?文件存在于那里(我有权使用 dbutils 保存文件,而且 - 我可以使用 Spark 从那里读取文件,但我不知道如何使用 pyspark 读取文件)。

添加这些行后:

dbutils.fs.cp("/databricks/folderName/fileName.shp", "file:/tmp/fileName.shp", recurse = True)
geopandas.read_file("/tmp/fileName.shp")

...根据下面的建议,我收到另一个错误。

org.apache.spark.api.python.PythonSecurityException: Path 'file:/tmp/fileName.shp' uses an untrusted filesystem 'org.apache.hadoop.fs.LocalFileSystem', but your administrator has configured Spark to only allow trusted filesystems: (com.databricks.s3a.S3AFileSystem, shaded.databricks.azurebfs.org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem, shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem, com.databricks.adl.AdlFileSystem, shaded.databricks.V2_1_4.com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem, shaded.databricks.org.apache.hadoop.fs.azure.NativeAzureFileSystem, shaded.databricks.org.apache.hadoop.fs.s3a.S3AFileSystem)

最佳答案

GeoPandas 对 DBFS 一无所知 - 它正在使用本地文件。所以你要么需要:

  • 使用 DBFS Fuse 从 DBFS 读取文件(但有一些 limitations ):
geopandas.read_file("/dbfs/databricks/folderName/fileName.shp")
dbutils.fs.cp("/databricks/folderName/fileName.shp", "file:/tmp/fileName.shp", recurse = True)
geopandas.read_file("/tmp/fileName.shp")

附注但如果文件已经复制到驱动节点,那么您只需从名称中删除 file: 即可。

更新问题后更新:

在 AAD 直通集群上可以执行的操作存在限制,因此您的管理员需要按照 documentation on troubleshooting 中的说明更改集群配置。如果您想将文件从 DBFS 复制到本地文件系统。

但是 /dbfs 方式也应该适用于直通集群,尽管它至少应该是 DBR 7.3 ( docs )

关于python - 从 Databrick 文件系统读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67601331/

相关文章:

apache-spark - Spark ;检查元素是否在 collect_list 中

python - Beautiful Soup 和 Pandas 提取物编号

azure - 如何为多个 Http 请求(例如 POST、GET 等)创建单个逻辑应用程序

c# - Azure AD - 验证 token

regex - Azure 静态网站的 URL 应不带尾随/

sql - “DataFrame”对象没有属性 'orderby'

python - SQLAlchemy 子查询获取 AttributeError : 'Query' object has no attribute 'is_clause_element'

python - Tensorflow 对象检测 - 避免重叠框

python - 索引出现最接近的 5 个索引列表

pandas - 使用 Spark 版本 2.2 的 row_number() 函数创建 PySpark DataFrame 中每行的行号