Mysql
 sql >> база данни >  >> RDS >> Mysql

Въздушен поток mysql към gcp Dag грешка

Според вашето проследяване кодът ви се разбива при тази точка . Както можете да видите, той обработва кода:

json.dump(row_dict, tmp_file_handle)

tmp_file_handle е NamedTemporaryFile инициализиран с входни аргументи по подразбиране, тоест симулира файл, отворен с w+b режим (и следователно приема само данни, подобни на байтове като вход).

Проблемът е, че в Python 2 всички низове са байтове, докато в Python 3 низовете са текстове (кодирани по подразбиране като utf-8 ).

Ако отворите Python 2 и изпълните този код:

In [1]: from tempfile import NamedTemporaryFile
In [2]: tmp_f = NamedTemporaryFile(delete=True)
In [3]: import json
In [4]: json.dump({'1': 1}, tmp_f)

Работи добре.

Но ако отворите Python 3 и изпълните същия код:

In [54]: from tempfile import NamedTemporaryFile
In [55]: tmp_f = NamedTemporaryFile(delete=True)
In [56]: import json
In [57]: json.dump({'1': 1}, tmp_f)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-57-81743b9013c4> in <module>()
----> 1 json.dump({'1': 1}, tmp_f)

/usr/local/lib/python3.6/json/__init__.py in dump(obj, fp, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    178     # a debuggability cost
    179     for chunk in iterable:
--> 180         fp.write(chunk)
    181 
    182 

/usr/local/lib/python3.6/tempfile.py in func_wrapper(*args, **kwargs)
    481             @_functools.wraps(func)
    482             def func_wrapper(*args, **kwargs):
--> 483                 return func(*args, **kwargs)
    484             # Avoid closing the file as long as the wrapper is alive,
    485             # see issue #18879.

TypeError: a bytes-like object is required, not 'str'

Получаваме същата грешка като вашата.

Това означава, че Airflow все още не се поддържа напълно за Python 3 (както можете да видите в тестово покритие , модулът airflow/contrib/operators/mysql_to_gcs.py все още не е тестван нито в python 2, нито в 3). Един от начините да потвърдите това е да стартирате кода си с помощта на python 2 и да видите дали работи.

Бих препоръчал да създадете проблем на техния JIRA искане за преносимост и за двете версии на Python.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите нечислови стойности в колона в MySQL

  2. Всички стойности ='s' в таблицата в PHP грешка

  3. Показване на резултатите от SQL заявката в php

  4. Проблем при конфигуриране на MySql с въздушен поток на apache в Hadoop

  5. MySQL Незаконен микс от съпоставяния