Thứ Ba, 29 tháng 11, 2016

Sử dụng Hive trong phân tích chiều hướng của cổ phiếu


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.
 Kết quả hình ảnh cho new york stoke

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