问题描述
我有很多 docx 文件要转换为 pdf。将它们一一转换需要很长时间。所以我写了一个python脚本来并行转换它们:
val df2 = df.withColumn(
"group_ids",expr("""
filter(
transform(
flatten(
transform(
group_ids,x -> arrays_zip(
array_repeat(x,size(group_ids)),group_ids
)
)
),x -> array(x['0'],x['group_ids'])
),x -> x[0] < x[1]
)
""")
)
df2.show(false)
+-------+------------------------+
|user_id|group_ids |
+-------+------------------------+
|1 |[[5,8]] |
|3 |[[1,2],[1,3],[2,3]]|
|2 |[[1,4]] |
+-------+------------------------+
但是每次运行这个脚本时,只有一部分 docx 文件转换成功。其余的转换过程甚至不会抛出任何错误信息。
解决方法
我们也被同样的问题困住了一段时间。
多个 LibreOffice 实例使用 UserInstallation 目录共享同一空间,因此并行转换在此处产生问题(间歇性进程似乎混淆了)。
为每个 libre 实例使用不同的目录有助于解决这个问题。您可以通过 UserInstallation env 变量实现此目的,该变量可以传递为:“-env:UserInstallation=file:///d:/tmp/p0/”
您可以通过在目录中附加循环变量或任何唯一标识符来自动执行此操作。