gpt4 book ai didi

python - Pyspark:在驱动程序和工作人员上使用 ffmpeg

转载 作者:行者123 更新时间:2023-12-04 22:58:11 31 4
gpt4 key购买 nike

我正在尝试在我的 Spark 集群(在 Databricks 中)上处理一批音频文件。我有一个安装 ffmpeg (带有 apt )和 pydub (带有 pip )的初始化脚本。
我有一个要处理的文件路径的数据框,当我调用打开/处理/导出的 UDF 时,有时会收到以下错误:

pydub.exceptions.CouldntEncodeError: Encoding failed. ffmpeg/avlib returned error code: 1
...
[wav @ 0x1e1b4c0] Could not find codec parameters for stream 0
(Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, 768 kb/s): unspecified sample format
也就是说,我使用 pydub 的 UDF 可以正确处理某些文件,但对于其他一些文件则失败。我检查了 file命令,所有这些 MP3 文件似乎都具有相同的配置/编解码器。所以我认为 pyspark 将我的数据帧中的“行”分配给驱动程序和工作人员,但只有驱动程序具有 ffmpeg。所以我的 worker 处理的所有文件都失败了。
我的假设正确吗?
我该如何解决这个问题?我也不知道怎么做:
  • 仅在驱动程序上进行处理(具有所有要求)
  • 在worker上也安装ffmpeg
  • 最佳答案

  • 首先,需要在所有具有init Scripts的节点上安装ffmpeg,它是pydub的依赖项。 .
    这可以通过在数据 block 单元格
  • 中使用以下代码来实现
    dbutils.fs.mkdirs("dbfs:/databricks/scripts/") #create a new dir
    dbutils.fs.put("/databricks/scripts/installffmpeg.sh",
    """
    #!/bin/bash
    sudo apt-get update
    sudo apt-get -y install ffmpeg
    """, True) #create an init script into the newly created dir
    然后转到 Clsusters -> Edit -> Advanced Options - Init Scripts 将目录添加到文件路径
    enter image description here
  • 选择Confirm

  • 现在启动集群时将安装 ffmpeg
  • 转到 Libraries,安装 New,在此处输入您的 pydub 包和版本:
    enter image description here

  • 点击 install完毕!

    关于python - Pyspark:在驱动程序和工作人员上使用 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64425119/

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