Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi luồng khí mysql sang gcp Dag

Theo dấu vết của bạn, mã của bạn đang bị hỏng tại điểm này . Như bạn có thể thấy, nó xử lý mã:

json.dump(row_dict, tmp_file_handle)

tmp_file_handle là một NamedTemporaryFile được khởi tạo với args đầu vào mặc định, nghĩa là, nó mô phỏng một tệp được mở bằng w+b (và do đó chỉ chấp nhận dữ liệu dạng byte làm đầu vào).

Vấn đề là trong Python 2, tất cả các chuỗi đều là byte trong khi trong Python 3 chuỗi là văn bản (được mã hóa theo mặc định là utf-8 ).

Nếu bạn mở Python 2 và chạy mã này:

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)

Nó hoạt động tốt.

Nhưng nếu bạn mở Python 3 và chạy cùng một mã:

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'

Chúng tôi gặp lỗi tương tự như lỗi của bạn.

Điều này có nghĩa là Airflow vẫn chưa được hỗ trợ đầy đủ cho Python 3 (như bạn có thể thấy trong vùng phủ sóng thử nghiệm , mô-đun airflow/contrib/operators/mysql_to_gcs.py chưa được thử nghiệm trong python 2 hoặc 3). Một cách để xác nhận điều này là chạy mã của bạn bằng python 2 và xem nó có hoạt động không.

Tôi khuyên bạn nên tạo sự cố trên JIRA của họ yêu cầu tính di động cho cả hai phiên bản 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. Mã lỗi:1406. Dữ liệu quá dài cho cột - MySQL

  2. Cài đặt MYSQL với ứng dụng .NET winforms

  3. Nhận sự khác biệt giữa số lượng của hai truy vấn con

  4. ElasticSearch sông JDBC MySQL không xóa bản ghi

  5. Khối lượng công việc kết hợp cơ sở dữ liệu OLTP / Analytics:Sao chép dữ liệu MySQL sang ClickHouse