我正在使用Spark(PySpark)流和Keras开发python预测脚本。该预测发生在我调用model.predict()的执行程序上。
我导入的模块是
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.models import Sequential
我已经检查过,这些导入在Spark驱动程序(2 cor + 2gb)上加载需要2.5秒。使我感到惊讶的是,每次执行者获得这份工作时,它都会自动再次进行这些导入。我确定每次将作业提交给执行者时都会进行这些导入的原因是,因为我在每个作业的执行者日志中看到以下语句,这些语句仅在我导入上述模块时才会出现。
/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype fromfloattonp.floatingis deprecated. In future, it will be treated asnp.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters Using TensorFlow backend.
我的目标是在1秒内做出预测,但是导入本身需要2.5秒(每次导入都在spark执行器上进行)。这是预期的行为吗?我能尽力减少这次时间的任何事情是毫秒吗?
更新1
过去几天,我对其进行了分析,发现有两个主要问题。