我试图弄清楚在逐行解析文件时使用生成器的最佳方法是什么。哪种使用生成器理解力会更好。
第一个选择。
with open('some_file') as file:
lines = (line for line in file)
Run Code Online (Sandbox Code Playgroud)
第二个选择。
lines = (line for line in open('some_file'))
Run Code Online (Sandbox Code Playgroud)
我知道它会产生相同的结果,但哪一个会更快/更高效?
我想设置一个NiFi工作流,它可以提取大型JSON文档(介于500 MB和3 GB之间),这些文档已经从FTP服务器中解压缩,将JSON对象拆分为单独的流文件,最后将每个JSON对象转换为SQL和将其插入MySQL数据库.
我在Oracle Java 8上运行NiFi 1.6.0,而Java的堆空间设置为1024 MB.
我目前的流程是:
GetFTP - > CompressContent - > SplitJson - > EvaluateJsonPath - > AttributesToJson - > ConvertJSONToSQL - > PutSQL
此流程适用于较小的JSON文档.Java OutOfMemory
一旦大于400 MB的文件进入SplitJson处理器,它就会抛出错误.我可以对现有流程进行哪些更改以使其能够处理大型JSON文档?