Tôi đang sử dụng Trình tải hàng loạt của Công cụ ứng dụng (Thời gian chạy Python) để tải lên hàng loạt đối tượng vào kho dữ liệu. Dữ liệu mà tôi đang tải lên được lưu trữ ở định dạng độc quyền, vì vậy tôi đã triển khai bằng trình kết nối riêng (đăng ký nó trong bulkload_config.py
) để chuyển đổi nó thành từ điển python trung gian.Hiệu suất của Trình tải số lượng lớn của Máy ứng dụng
import google.appengine.ext.bulkload import connector_interface
class MyCustomConnector(connector_interface.ConnectorInterface):
....
#Overridden method
def generate_import_record(self, filename, bulkload_state=None):
....
yeild my_custom_dict
Để chuyển từ điển python trung tính này thành kho dữ liệu Thực thể, tôi sử dụng chức năng nhập bài đăng tùy chỉnh mà tôi đã xác định trong YAML của mình.
def feature_post_import(input_dict, entity_instance, bulkload_state):
....
return [all_entities_to_put]
Lưu ý: Tôi không sử dụng entity_instance, bulkload_state
trong chức năng feature_post_import
. Tôi chỉ đang tạo các thực thể lưu trữ dữ liệu mới (dựa trên số input_dict
) và trả lại chúng.
Bây giờ, mọi thứ đều hoạt động tuyệt vời. Tuy nhiên, quá trình tải dữ liệu hàng loạt dường như mất quá nhiều thời gian. Ví dụ: một GB (~ 1.000.000 thực thể) dữ liệu mất ~ 20 giờ. Làm cách nào để cải thiện hiệu suất của quá trình tải hàng loạt. Tui bỏ lỡ điều gì vậy?
Một số tham số mà tôi sử dụng với appcfg.py là (10 chuỗi có kích thước lô là 10 thực thể cho mỗi chuỗi).
Linked một Tập đoàn Bưu Google App Engine Python: http://groups.google.com/group/google-appengine-python/browse_thread/thread/4c8def071a86c840
Cập nhật: Để kiểm tra hiệu suất của quá trình tải hàng loạt, tôi nạp entities
của một 'thử nghiệm' Kind
. Mặc dù điều này entity
có FloatProperty
rất đơn giản, nhưng tôi vẫn mất một lượng thời gian tương tự để tải số lượng lớn entities
.
Tôi vẫn đang cố gắng thay đổi các thông số bộ tải số lượng lớn, rps_limit
, bandwidth_limit
và http_limit
, để xem liệu tôi có thể nhận được thêm thông lượng nào không.
Nếu có điều gì đó khó hiểu về câu hỏi hoặc thứ gì đó mà tôi cần thêm thì hãy cho tôi biết. – Rahul