Databricks集群PDAL安装后OBJ转LAS失败问题求助
PDAL在Databricks Runtime 9.x中OBJ转LAS无输出文件但返回码为0的问题排查
问题现象
OBJ转PCD或文本格式正常,但转LAS时,执行pdal translate命令返回returncode=0,却未生成目标LAS文件。
环境配置
Dockerfile
FROM databricksruntime/standard:9.x # Install miniconda ENV CONDA_DIR /databricks/conda RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py38_23.1.0-1-Linux-x86_64.sh -O ~/miniconda.sh && \ /bin/bash ~/miniconda.sh -b -p /databricks/conda COPY env.yml /databricks/.conda-env-def/env.yml RUN /databricks/conda/bin/conda env create --file /databricks/.conda-env-def/env.yml \ && ln -s /databricks/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh RUN /databricks/conda/bin/conda config --system --set channel_priority strict \ && /databricks/conda/bin/conda config --system --set always_yes True ENV DEFAULT_DATABRICKS_ROOT_CONDA_ENV=dcs-minimal ENV DATABRICKS_ROOT_CONDA_ENV=dcs-minimal
conda环境配置(env.yml)
name: dcs-minimal channels: - conda-forge dependencies: - python=3.8.8 - pip=20.2.4 - six=1.15.0 - ipython=7.19.0 - nomkl=3.0 - numpy=1.19.2 - pandas=1.1.5 - traitlets=5.0.5 - wheel=0.35.1 - pdal - python-pdal - pip: - pyarrow==1.0.1
关键包版本
- pdal: 2.4.3
- python-pdal: 3.1.2
执行命令及结果
执行的Python代码:
result = subprocess.run(['pdal','translate','/dbfs/mnt/demo.obj','/dbfs/mnt/demo.las'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT )
返回结果:
CompletedProcess(args=['pdal', 'translate', '/dbfs/mnt/demo.obj', '/dbfs/mnt/demo.las'], returncode=0, stdout=b'')
排查步骤
检查DBFS路径权限
- 验证执行进程对
/dbfs/mnt/目录的写入权限,可先尝试创建空文件测试:touch /dbfs/mnt/test_write.las - 若权限不足,调整挂载点权限或切换到
/dbfs/tmp/等默认有权限的目录重试。
- 验证执行进程对
开启PDAL详细日志
- 修改命令添加
-v参数提升日志级别,获取执行细节:result = subprocess.run(['pdal','translate','-v','8','/dbfs/mnt/demo.obj','/dbfs/mnt/demo.las'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) print(result.stdout.decode('utf-8')) - 日志级别1-9可调,越高输出越详细,能定位LAS写入阶段的隐藏问题。
- 修改命令添加
验证LAS驱动状态
- 执行命令确认LAS驱动已加载:
pdal drivers | grep las - 若驱动缺失,重新安装PDAL并确保conda-forge源的依赖完整。
- 执行命令确认LAS驱动已加载:
测试本地文件系统转换
- 将OBJ复制到本地目录(如
/tmp/)执行转换,排除DBFS挂载问题:cp /dbfs/mnt/demo.obj /tmp/demo.obj pdal translate /tmp/demo.obj /tmp/demo.las ls -l /tmp/demo.las - 若本地转换成功,说明问题出在DBFS写入逻辑,需检查挂载配置或改用Databricks文件API操作。
- 将OBJ复制到本地目录(如
检查OBJ文件有效性
- 确认OBJ包含有效点云数据,LAS格式要求点云有坐标信息,若OBJ仅含网格面数据,PDAL可能无输出但返回成功:
pdal info /dbfs/mnt/demo.obj
- 确认OBJ包含有效点云数据,LAS格式要求点云有坐标信息,若OBJ仅含网格面数据,PDAL可能无输出但返回成功:
内容的提问来源于stack exchange,提问作者stefania
相关产品推荐
相关产品推荐

