sql >> データベース >  >> RDS >> Mysql

AirflowmysqlからgcpDagエラー

    トレースバックによると、コードはこの点 。ご覧のとおり、コードを処理します:

    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)ではまだテストされていません。これを確認する1つの方法は、Python 2を使用してコードを実行し、それが機能するかどうかを確認することです。

    彼らのJIRA で問題を作成することをお勧めします 両方のバージョンのPythonの移植性を要求します。




    1. mysql-特殊文字%(パーセント)および_(アンダースコア)を使用したクエリ検索の処理方法

    2. SqlBulkCopyの推奨バッチサイズはどれくらいですか?

    3. 正しい行をフェッチするためのMySQL動的リンク

    4. PHPとMySQLを使用して簡単なCRUDを簡単に作成する方法