显然,在基于磁盘的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在哪个时候删除文件?
答案 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环境变量设置到所需位置似乎有效。