Trong bài trước đã hướng dẫn cài đặt hive trong môi trường centos. Bài này sẽ hướng dẫn một case cụ thể, sử dụng Hive phân tích chiều hướng của hai loại cổ phiếu. Dữ liệu thử nghiệm được lấy từ ‘NYSE_daily_prices_Q.csv’ là dữ liệu của hai mã cổ phiếu QRR và QTM của sàn NewYork.
Bước 1: Tạo bảng dữ liệu trong Hive
Trong Hive, sử dụng lệnh sau:
hive> create table NYSE (`exchange` String,stock_symbol String,stock_date String,stock_price_open double, stock_price_high double, stock_price_low double, stock_price_close double, stock_volume double, stock_price_adj_close double) row format delimited fields terminated by ‘,’;
Lệnh trên sẽ tạo một bảng có tên ‘NYSE’ trong Hive. Bảng NYSE có các cột phù hợp với file csv dữ liệu nguồn và được xác định các giá trị phân cách thông qua ký tự dấu phẩy. Mặc định Hive sử dụng cơ sở dữ liệu Derby, bạn có thể thay đổi cơ sở dữ liệu sang MySQL hay Postgres thông qua cấu hình. Mặc định, Hive tự động tạo thư mục nyse trong thư mục /user/hive/warehouse/ của HDFS sau khi thực hiện tạo bảng thành công
Bước 2: Đẩy dữ liệu vào bảng Hive
Sử dụng câu lệnh sau để đưa dữ liệu từ file CSV vào bảng NYSE vừa tạo ra:
hive> load data local inpath ‘/home/public_folder/NYSE_daily_prices_Q.csv’ into table NYSE;
Câu lệnh trên load dữ liệu từ file csv trên máy vào bảng NYSE trong Hive. Sau câu lệnh trên, Hive tự động đưa file csv vào HDFS để quản lý theo đường dẫn /user/hive/warehouse/nyse/NYSE_daily_prices_Q.csv
Bước 3: Tính toán hiệp phương sai của hai mã chứng khoán
Để tính hiệp phương sai của hai mã chứng khoán có trong bảng nyse, chúng ta sử dụng câu query sau:
hive> select a.STOCK_SYMBOL, b.STOCK_SYMBOL, month(a.STOCK_DATE),((AVG(a.STOCK_PRICE_HIGH*b.STOCK_PRICE_HIGH)) - (AVG(a.STOCK_PRICE_HIGH)*AVG(b.STOCK_PRICE_HIGH))) from NYSE a join NYSE b on a.STOCK_DATE=b.STOCK_DATE where a.STOCK_SYMBOL<b.STOCK_SYMBOL Group by a.STOCK_SYMBOL, b. STOCK_SYMBOL, month(a.STOCK_DATE);
Nếu chạy thành công, trên console của bạn sẽ có nội dung:.
MapReduce Total cumulative CPU time: 5 seconds 250 msec
Ended Job = job_1480387836084_0007
MapReduce Jobs Launched:
Stage-Stage-2: Map: 1 Reduce: 1 Cumulative CPU: 5.25 sec HDFS Read: 207901 HDFS Write: 1688 SUCCESS
Total MapReduce CPU Time Spent: 5 seconds 250 msec
OK
QRR QTM NULL -0.3760747981545691
QRR QTM 1 0.01249555555555304
QRR QTM 2 0.02288958333331692
QRR QTM 3 -0.003957988165673498
QRR QTM 4 0.026867999999996783
…
QRR QXM NULL 0.6799660289115081
QRR QXM 1 0.008073333333314281
QRR QXM 2 0.2498416666666401
QRR QXM 3 0.30247337278105135
QRR QXM 4 0.03806000000001575
QRR QXM 5 0.010515277777770393
QRR QXM 6 0.06467500000000825
...
Từ kết quả chạy có thể đưa ra một số nhận định sau.
- Trung bình trong các tháng, mã cổ phiếu QXM đều tăng nhẹ
- Đối với cổ phiếu QTM có tháng 3 và một tháng chưa được ghi nhận là giảm
- Mức độ tăng trung bình của QXM lớn hơn so với QTM
- … (tôi chưa chơi chứng khoán bao giờ :D)
Chúc các bạn thành công
$ cd $HIVE_HOME
$ bin/hive
Logging initialized using configuration in jar:file:/opt/hadoop/hive/lib/hive-common-0.12.0.jar!/hive-log4j.properties
hive>
Nếu gặp lỗi: “Hive metastore database is not initialized” là do thư mục metastore_db đã được sinh ra, để sửa lỗi này, bạn chạy các lệnh sau:
[hadoop@localhost hive_2_1]$ mv metastore_db metastore_db.temp
[hadoop@localhost hive_2_1]$ schematool -initSchema -dbType derby
Sau đó khởi động lại hive bằng lệnh
$ bin/hive
Nếu terminator thể hiện hive> tức là bạn đã thành công
Bước 5: Kiểm tra một số chức năng trong hive
Tạo một bảng trong hive
hive> CREATE TABLE demo1 (id int, name string);
OK
Time taken: 6.565 seconds
Hiển thị danh mục bảng có trong hive.
hive> SHOW TABLES;
OK
demo1
Time taken: 0.231 seconds, Fetched: 1 row(s)
Xóa một bảng trong hive
hive> DROP TABLE demo1;
OK
Time taken: 2.393 seconds
Tại đây, chúng ta đã thành công khi cài đặt và cấu hình hive với Centos. Trong bài tiếp theo, tôi sẽ sử dụng hive phân tích một case studies cụ thể
Không có nhận xét nào :
Đăng nhận xét