如何指定dask用于临时文件的目录?

时间:2016-10-14 12:03:50

标签: dask

显然,在基于磁盘的shuffle操作期间,dask会写入/ tmp文件夹。在我使用的系统上,此文件夹安装在一个非常小的分区(30GB)上,在一些计算后导致以下错误:

IOError: [Errno 28] No space left on device

Traceback    

File "[path_to_anaconda]/lib/python2.7/site-packages/dask/async.py", line 263, in execute_task
result = _execute_task(task, data)
File "[path_to_anaconda]/lib/python2.7/site-packages/dask/async.py", line 245, in _execute_task
return func(*args2)
File "[path_to_anaconda]/lib/python2.7/site-packages/dask/dataframe/shuffle.py", line 395, in shuffle_group_3
p.append(d, fsync=True)
File "[path_to_anaconda]/lib/python2.7/site-packages/partd/encode.py", line 25, in append
self.partd.append(data, **kwargs)
File "[path_to_anaconda]/lib/python2.7/site-packages/partd/file.py", line 41, in append
f.write(v)

如何指定dask用于shuffle的文件夹?我还能做些什么来避免这个问题?我没有管理权限,因此将/ tmp挂载到更大的东西不是一种选择。

到目前为止,我只看到/ tmp文件夹变大了。 dask在哪个时候删除文件?

3 个答案:

答案 0 :(得分:2)

设置TMPDIR可能会引起问题,因为它也会影响其他应用程序。一种替代方法是使用dask.config.set

>>> import dask
>>> with dask.config.set({'temporary_directory': '/path/to/tmp'}):
...     pass

您也可以添加行

temporary_directory: /path/to/tmp

.dask/config.yaml(在您的主目录中)configuration docs

答案 1 :(得分:2)

由于某些原因,接受的代码对我不起作用。我收到此错误:@NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { //code Dialog dialog = builder.create();Intent intent = new Intent(getContext(), MainActivity.class); intent.putExtra("EXTRA_NAME", name); intent.putExtra("EXTRA_NUMBER", number); startActivity(intent); return dialog ; }

以下是适用的版本:token=

还请注意,您必须在创建客户之前

答案 2 :(得分:1)

通过export TMPDIR=/my/path将TMPDIR环境变量设置到所需位置似乎有效。