pyspark:在驱动程序和工作程序上使用ffmpeg

e0uiprwp  于 2021-05-19  发布在  Spark
关注(0)|答案(0)|浏览(427)

我正在尝试处理我的spark集群(databricks)上的一批音频文件。我有一个安装ffmpeg(带 apt )和pydub(带 pip ).
我有一个要处理的文件路径的Dataframe,当我调用打开/处理/导出的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将Dataframe中的“行”分配给驱动程序和工作程序,但只有驱动程序有ffmpeg。所以我的工人处理的所有文件都失败了。
我的假设正确吗?
我怎样才能解决这个问题?我也不知道该怎么做:
只在驱动程序上进行处理(驱动程序具有所有要求)
在worker上也安装ffmpeg

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题