2014-04-22 45 views
5

当我尝试上传CSV文件较大它不能CKAN数据存储并显示以下信息CKAN:上传到数据存储失败;资源太大,下载

Error: Resource too large to download: 5158278929 > max (10485760). 

我改变以MB为单位的最大一个资源上传到

ckan.max_resource_size = 5120 

/etc/ckan/production.ini

我还需要改变上传一个大的csv到ckan。

截图: Error: Resource too large to download: 5158278929 > max (10485760)

+0

您可以更具体地了解您尝试将文件上传到数据存储的过程吗?例如,你在这里使用datapusher吗?还是数据存储?还是你的意思是你试图将它上传到文件存储?另外,你使用什么版本的CKAN? –

+0

我们正试图将csv上传到数据存储。使用ckan 2.2版 –

+0

@SeanHammond请在更新后的问题中看到错误的截图。请帮助我找出错误。 –

回答

4

该错误消息来自DataPusher,而不是从自身CKAN:https://github.com/ckan/datapusher/blob/master/datapusher/jobs.py#L250。不幸的是,它看起来像DataPusher的最大文件大小硬编码为10MB:https://github.com/ckan/datapusher/blob/master/datapusher/jobs.py#L28。不支持将更大的文件推入DataStore。

两个可能的解决方法可能是:

  1. 使用DataStore API自己添加的数据。

  2. 更改MAX_CONTENT_LENGTH就像我链接到上面的DataPusher源代码中的一行,更大一些。

+0

谢谢肖恩。我将MAX_CONTENT_LENGTH值更改为一个较大的值(5 GB),然后发生以下错误:[u'File“/usr/lib/ckan/datapusher/lib/python2.7/site-packages/apscheduler/scheduler.py” ,第512行,在_run_job \ n retval = job.func(* job.args,** job.kwargs)\ n',u'File'/ usr/lib/ckan/datapusher/src/datapusher/datapusher/jobs。 py“,第261行,在push_to_datastore \ nf = cStringIO.StringIO(response.read())\ n',u'文件”/usr/lib/python2.7/socket.py“,第358行,在阅读\ n buf.write(data)\ n',u“MemoryError('memory of memory',)”] –

+0

您的计算机(您正在运行datapusher的计算机)在尝试上载文件时内存不足。看起来像datapusher从CKAN下载整个文件时和/或CKAN将整个文件保存在内存中,同时提供下载。我想“流”下载,这将避免这种错误不被支持。因此,如果您想使用DataPusher将5GB文件压入DataStore,则需要超过5GB的内存。 –

+2

您仍然可以使用我在上面的答案中链接到的DataStore API来将您的文件逐个添加到DataStore,而不是一次全部添加。 –