tuyên bố vấn đề
Tôi đã tạo như sau Hàm do người dùng xác định
để có được nó ở định dạng tôi muốn ngày hôm qua
, vì tôi sẽ chuyển định dạng đó từ truy vấn sang phương thức bên dưới.
lớp cuối cùng công khai Ngày hôm qua mở rộng UDF {
Đánh giá chuỗi công khai (định dạng chuỗi cuối cùng) {
DateFormat dateFormat = new SimpleDateFormat(format);
Lịch cal = Calendar.getInstance();
cal.add(Lịch.DATE, -1);
trả về dateFormat.format(cal.getTime()).toString();
}
}
Vì vậy, bất cứ khi nào tôi cố gắng tạo một hàm tạm thời bằng cách thêm jar vào đường dẫn lớp và ngày hôm qua
Khi chạy truy vấn sau, tôi luôn không nhận được kết quả nào -
hive> tạo hàm tạm thời ngày hôm qua dưới dạng 'com.example.hive.udf.YesterdayDate';
ĐƯỢC RỒI
Thời gian thực hiện: 0,512 giây
Dưới đây là truy vấn tôi đang chạy -
Hive> CHỌN * TỪ THỜI GIAN THỰC trong đó dt= ngày hôm qua ('yyyyMMdd') GIỚI HẠN 10;
ĐƯỢC RỒI
Tôi luôn không nhận được kết quả nào, nhưng bảng có dữ liệu cho ngày 5 tháng 8.
Tôi đã làm gì sai? Bất kỳ lời khuyên sẽ được đánh giá rất cao.
Nếu ngày hôm nay là ngày 6 tháng 8, truy vấn sẽ trông như thế này - Sau đó, bằng cách sử dụng hàm do người dùng xác định ở trên, truy vấn sẽ trông như thế này -
CHỌN * TỪ THỜI GIAN THỰC trong đó dt= '20120805' GIỚI HẠN 10;
LƯU Ý: - Vì tôi đang sử dụng Tổ ong 0,6
, vì vậy nó không hỗ trợ thay thế biến, vì vậy tôi không thể sử dụng ở đây hiveconf
, và bảng trên đã được phân vùng trong cột dt(ngày)
.
CHỌN TỪ_UNIXTIME(UNIX_TIMESTAMP()-1*24*60*60,'%Y%m%d');
Tôi là một lập trình viên xuất sắc, rất giỏi!