Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 使用go和app engine导入和解析大型CSV文件';s数据存储_Google App Engine_Csv_Go_Google Cloud Datastore - Fatal编程技术网

Google app engine 使用go和app engine导入和解析大型CSV文件';s数据存储

Google app engine 使用go和app engine导入和解析大型CSV文件';s数据存储,google-app-engine,csv,go,google-cloud-datastore,Google App Engine,Csv,Go,Google Cloud Datastore,在本地,我能够成功地(在任务中): 打开csv 扫描每一行(使用Scanner.Scan) 将解析的CSV行映射到所需的结构 将结构保存到数据存储 我看到这将允许我——但这似乎有32MB的限制。我还看到有一个批量上传工具——bulk_uploader.py——但它不能完成我需要的所有数据处理,我想限制这种批量插入的写入(以及真正的成本) 如果没有从本地存储读取的好处,如何有效地读取和解析非常大(500mb+)的csv文件?您需要查看以下选项,看看它是否适合您: P>查看大文件大小时,应考虑

在本地,我能够成功地(在任务中):

  • 打开csv
  • 扫描每一行(使用Scanner.Scan)
  • 将解析的CSV行映射到所需的结构
  • 将结构保存到数据存储
我看到这将允许我——但这似乎有32MB的限制。我还看到有一个批量上传工具——bulk_uploader.py——但它不能完成我需要的所有数据处理,我想限制这种批量插入的写入(以及真正的成本)


如果没有从本地存储读取的好处,如何有效地读取和解析非常大(500mb+)的csv文件?

您需要查看以下选项,看看它是否适合您:

<> P>查看大文件大小时,应考虑使用该文件。您可以使用GCS提供的命令行实用程序将文件上载到bucket。上传后,您可以直接使用JSON API处理文件并将其导入数据存储层。请看以下内容:

  • 如果这就像一次性导入一个大文件,另一个选择可能是启动一个Google Compute VM,在那里编写一个应用程序,从GCS读取数据,并通过较小的块将数据传递给运行在App Engine Go中的服务,然后该服务可以接受并保存数据


  • 这并不是我所希望的解决方案,但我最终将大文件分成32MB的片段,将每个片段上传到blob存储,然后在一个任务中解析每个片段


    它并不漂亮。但这比其他选择花费的时间要少

    将其托管到其他地方并通过http解析,这是我唯一能想到的事情,因为我对GAE不太熟悉。@其中一件事情不起作用,因为我无法在GAE强制请求超时之前解析文件。1。它看起来不像go的GAE运行时目前支持GCS。或者至少没有记录在案。在GAE文档的“存储数据”部分中,只有blob store,它指出,
    除了系统范围的安全配额外,Blobstore的使用还受到一个限制:应用程序可以通过一个API调用读取的Blobstore数据的最大大小为32 MB。
    。所以我仍然被一个硬限制的io流所困扰。见第2条。这可能是可行的,但仍然是一个真正的痛苦。我仍然希望我还有另一个选择。谢谢你的回复,罗明。我在Go GCS样本中输入了错误的链接,并且已经更正了我上面的回复,所以请检查这是否适用于你。您可以直接使用JSON API。此外,我认为您的文件很大,但单个记录较小,您希望处理这些文件并将其放入存储中。如果blob本身很大,那么您需要将这些数据单独保存在GCS中,并从您的GAE应用程序中引用它们。