我尝试从水壶中的json文件导入数据,但不幸的是我遇到了一个java错误:java.lang.OutOfMemoryError:Java堆空间。
我的水壶的构建版本是5.4.0.1-130,我的数据格式如下:
[{"movie_title": "Carmen (English Subtitled)"},
{"movie_title": "Sugar Valentine"},
{"movie_title": "Segovia at Los Olivos [VHS]"},
{"movie_title": "Lost Boys of Sudan [VHS]"},
{"movie_title": "The Virgin of Juarez"},
{"movie_title": "Red Dawn ('84)"},
{"movie_title": "The Complete Story Deftones"},
{"movie_title": "It Came From Somewhere Else"},
{"movie_title": "Rubi"},
{"movie_title": "Fushigi Yugi - The Mysterious Play (Vol. 1)"},
{"movie_title": "Tenchi Universe, Vol. 4"}]
这是一个实际上有210000+条记录的json文件。
我尝试导入所有的movie_titles,然后在水壶中选择了“Json Input”步骤。
字段的配置如下所示:
Name : movie_title
Path : [*].movie_title
Type : String
Trim type : none
Repeat : N
单击预览行后,会出现错误,例如
2015/10/25 11:45:45 - Version checker - OK
2015/10/25 15:10:23 - /Users/Chris/Desktop/exercise_2/Exercise_2_Step3.ktr : Exercise_2_Step3 - Dispatching started for transformation [/Users/Chris/Desktop/exercise_2/Exercise_2_Step3.ktr : Exercise_2_Step3]
2015/10/25 15:10:31 - Json Input.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : UnexpectedError:
2015/10/25 15:10:31 - Json Input.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : java.lang.OutOfMemoryError: Java heap space
2015/10/25 15:10:31 - Json Input.0 - Finished processing (I=0, O=0, R=0, W=0, U=0, E=1)
2015/10/25 15:10:31 - /Users/Chris/Desktop/exercise_2/Exercise_2_Step3.ktr : Exercise_2_Step3 - Transformation detected one or more steps with errors.
2015/10/25 15:10:31 - /Users/Chris/Desktop/exercise_2/Exercise_2_Step3.ktr : Exercise_2_Step3 - Transformation is killing the other steps!
有谁知道如何解决这个问题?
答案 0 :(得分:0)
我做了一些测试并得到了相同的结果--OutOfMemoryError。 我生成json文件样本进行实验。
带有数组的JSON文件,包含300000个元素。具有movie_title字段的每个元素等于60个符号。
整个文件总共占用22MB空间。 Kettle在jvm中使用javascript引擎解析jason becouse在类中引发的错误
sun.org.mozilla.javascript.internal.Parser
看起来它尝试在应用任何JsonPath表达式之前解析并将整个json文件加载到内存中。结果是OutOfMemoryErrror。
实际上你可以做的是使用JavaScript步骤或用户定义的Java类将json文件加载到内存中并使用Java Api来解析json。
这可能会有所帮助 Nashorn JSON.parse() - java.lang.OutOfMemoryError: Java heap space - JDK8u60