sử dụng AWS EMR trên phiên bản 5.2.1 Là một môi trường xử lý dữ liệu, khi xử lý một tệp JSON khổng lồ, có lược đồ phức tạp và nhiều trường lồng nhau, Hive không thể xử lý được và các lỗi như sau Nó đã đạt đến giới hạn hiện tại là độ dài cột 4000 ký tự.
Lỗi khi xử lý câu lệnh: FAILED: Lỗi thực thi, trả về mã 1 từ org.apache.hadoop.hive.ql.exec.DDLTask.
Nhìn vào tài liệu, đã có rất nhiều câu hỏi về vấn đề này hoặc các vấn đề tương tự, mặc dù không có câu hỏi nào được giải quyết [1 , 2 ]. Ở đây nên thay đổi một số trường của Metastore thành các giá trị khác nhau để cho phép định nghĩa cấu trúc có độ dài lớn hơn.
COLUMNS_V2.TYPE_NAME
TABLE_PARAMS.PARAM_VALUE
SERDE_PARAMS.PARAM_VALUE
SD_PARAMS.PARAM_VALUE
Như đã nêu trong số đầu tiên, giải pháp được đề xuất có đề cập:
[…] sau khi thiết lập các giá trị, Metastore cũng phải được được cấu hình and khởi động lại."
Tuy nhiên, ngoài giá trị DB,还Những gì phải được cấu hình.
Vì vậy, hãy thay đổi các trường của Metastore cục bộ hiện tại (trong trường hợp này là mysql) từ sợi dây
cập nhật lên văn bản trung gian
Và sau khi khởi động lại quá trình Metastore, tôi vẫn không thể đạt được bất kỳ tiến triển nào vì các nỗ lực tải JSON tiếp tục không thành công với cùng một lỗi.
Tôi có thiếu thứ gì đó không, hoặc có ai tìm ra cách khác để giải quyết vấn đề này không?
Xem mã nguồn MetaStore là Vấn đề về tổ ong HIVE-15249Liên quan, có một kiểm tra bổ sung bên cạnh các ràng buộc tham số được đặt trong bảng MetaStore.
Đặc biệt, ởHiveMetaStoreUtils.java
Trong tệp, câu lệnh sau dường như là nguyên nhân gây ra lỗi thực thi:
public static int MAX_MS_TYPENAME_LENGTH = 2000; // 4000/2, đối với trường hợp unicode không chắc chắn
Do đó, việc thay đổi giá trị được đề cập trong MetaStore là không đủ vì ràng buộc mã sẽ đưa ra một ngoại lệ.
Tôi là một lập trình viên xuất sắc, rất giỏi!