sql-machine-learning / sqlflow

Brings SQL and AI together.
https://sqlflow.org
Apache License 2.0
5.08k stars 698 forks source link

Failed running extended SQL under REPL mode #1261

Open BlackPoint-CX opened 4 years ago

BlackPoint-CX commented 4 years ago

Description When running extended sql (both train task and predict task) under REPL mode, the following exception will be thrown out.

However the same sql can be done in cell of jupyter notebook.

Traceback (most recent call last):
  File "<stdin>", line 89, in <module>
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/sqlflow_submitter/tensorflow/predict.py", line 112, in pred
    one_batch = pred_dataset.__iter__().next()
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/tensorflow/python/data/ops/iterator_ops.py", line 623, in next
    return self._next_internal()
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/tensorflow/python/data/ops/iterator_ops.py", line 615, in _next_internal
    output_shapes=self._flat_output_shapes)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/tensorflow/python/ops/gen_dataset_ops.py", line 2120, in iterator_get_next_sync
    _six.raise_from(_core._status_to_exception(e.code, message), None)
  File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.UnknownError: TPayloadMeta: TProtocolException(type=4)
Traceback (most recent call last):

  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/tensorflow/python/ops/script_ops.py", line 209, in __call__
    ret = func(*args)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 525, in generator_py_func
    values = next(generator_state.get_iterator(iterator_id))
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/sqlflow_submitter/db.py", line 159, in reader
    cursor = conn.cursor(configuration=conn.session_cfg)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/impala/hiveserver2.py", line 124, in cursor
    session = self.service.open_session(user, configuration)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/impala/hiveserver2.py", line 1057, in open_session
    resp = self._rpc('OpenSession', req)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/impala/hiveserver2.py", line 985, in _rpc
    response = self._execute(func_name, request)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/impala/hiveserver2.py", line 1002, in _execute
    return func(request)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/thriftpy2/thrift.py", line 219, in _req
    return self._recv(_api)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/thriftpy2/thrift.py", line 231, in _recv
    fname, mtype, rseqid = self._iprot.read_message_begin()
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/thriftpy2/protocol/binary.py", line 372, in read_message_begin
    self.trans, strict=self.strict_read)
  File "/home/luban/miniconda/envs/sqlflow-dev-py36/lib/python3.6/site-packages/thriftpy2/protocol/binary.py", line 178, in read_message_begin
    message='No protocol version header')

thriftpy2.protocol.exc.TProtocolException: TProtocolException(type=4)   [[{{node PyFunc}}]] [Op:IteratorGetNextSync]

Relate SQL TO Train

%%sqlflow
SELECT *
FROM notebook_dev.iris_train
TO TRAIN sqlflow_models.DNNClassifier
WITH
    model.n_classes = 3,
    model.hidden_units = [10,40],
    train.epoch = 3,
    train.batch_size = 64
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO notebook_dev.iris_dnn_model;

Make prediction

%%sqlflow
SELECT *
FROM notebook_dev.iris_test
TO PREDICT notebook_dev.iris_dnn_predict.class
USING notebook_dev.iris_dnn_model;

Standard SQL image

tonyyang-svail commented 4 years ago

Hi @BlackPoint-CX, looks like this issue is due to Session misconfiguration on REPL. Could you please provide a command line to reproduce this?