如何通过python流在H2o中进行快速评分?

时间:2017-07-13 13:42:49

标签: python h2o

我正在尝试使用H2o模型来获取python进程中的一些数据。我不能在文件中使用数据,而是使用流。我想在python中做这样的事情。

scores = [model.predict(line) for line in data]

其中数据是一般的可迭代的;例如发电机。

这是不可能的,因为数据是在python中,首先必须移动到H2o JVM。我不想将整个流读入内存并将其作为H2oFrame传递。事实上,它可能有无限长度。

我能做到

scores = [model.predict(h2o.H2oFrame([line]) for line in data]

但这非常慢,因为每次调用H2oFrame都必须生成一个新的解析器。解析器的创建(我假设创建,而不是实际的解析,但我不确定)需要25.2毫秒,这太慢,无法迭代数百万项的流。

有没有办法让这个快?例如,您是否可以传入解析器而不是每次都创建一个新解析器?

我意识到还有其他方法可以做到这一点,例如在Java代码中使用POJO进行评分,但我想在Python中进行评分。也不想要任何重量级的解决方案,如Spark流媒体。我已经尝试过创建一个FIFO并从中读取,好像它是一个真实的文件但是没有用。

0 个答案:

没有答案