Kho dữ liệu đã thực sự là một trận chiến đang diễn ra giữa các tổ chức trong nhiều
năm. Làm thế nào để bạn xây dựng nó? Những dữ liệu của bạn có thể tích hợp
không? Bạn có nên sử dụng Kimball hoặc Inmon, nhà máy doanh nghiệp thông
tin (CIF), hoặc siêu thị dữ liệu? Danh sách có thể kéo dài thêm theo ngày, thậm chí
nhiều thập kỷ. Với dữ liệu lớn, các câu hỏi trở thành phức tạp hơn, chẳng hạn như
là một kho dữ liệu đã đủ hay chưa?
17 trang |
Chia sẻ: lylyngoc | Lượt xem: 1602 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Xây dựng một kho dữ liệu với Hive, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Xây dựng một kho dữ liệu với Hive
Xây dựng kho dữ liệu dựa vào ngân sách
Kho dữ liệu đã thực sự là một trận chiến đang diễn ra giữa các tổ chức trong nhiều
năm. Làm thế nào để bạn xây dựng nó? Những dữ liệu của bạn có thể tích hợp
không? Bạn có nên sử dụng Kimball hoặc Inmon, nhà máy doanh nghiệp thông
tin (CIF), hoặc siêu thị dữ liệu? Danh sách có thể kéo dài thêm theo ngày, thậm chí
nhiều thập kỷ. Với dữ liệu lớn, các câu hỏi trở thành phức tạp hơn, chẳng hạn như
là một kho dữ liệu đã đủ hay chưa? Câu trả lời nằm ở các doanh nghiệp. Người ta
cho rằng Hive là kho dữ liệu Hadoop. Dù trên một mức độ nào đó là đúng, đôi khi
nó cũng là một cái gì đó của một nhận định sai. Tuy nhiên, đôi khi bạn phải sử
dụng các công cụ có sẵn, và vì thế, Hive có thể được coi là một kho dữ liệu.
Ba đối tượng để tiếp cận một doanh nghiệp. Đối tượng đầu tiên — kho dữ liệu
(data warehouse) — là rất lớn: nó mang đến lịch sử và kinh nghiệm, đồng thời là
một trải nghiệm tốt. Nhưng nó cũng cồng kềnh và tốn kém theo rất nhiều cách
khác nhau, và người ta đang mệt mỏi với các chi phí để cho các kết quả khác nhau.
Apache Hadoop sa vào lối cũ và rút lại tuyên bố muốn tiếp quản thị trường. Nó rao
giảng về dữ liệu lớn, vận tốc, khối lượng, đa dạng, và một loạt thứ v khác mà
không có nhiều ý nghĩa nào khác ngoài một kế hoạch tiếp thị. Nó đưa ra các phân
tích, dự đoán, và nhiều hơn nữa. Và nó rẻ. Mọi người dừng lại và lắng nghe.
Apache Hive ra đời, nhưng không phải để cố gắng đánh bại các đối tượng khác. Nó
muốn làm việc với Hadoop, nhưng không giống như Hadoop, nó không muốn gạt
các kho dữ liệu đi sang một phía. Hive không những có khả năng kho dữ liệu, mà
còn có khả năng phân tích kinh doanh thông minh (BI) và hạn chế phân tích. Nó
không những có khả năng cơ sở dữ liệu, mà còn có hệ quản trị cơ sở dữ liệu
(RDBMS) và ngôn ngữ truy vấn cấu trúc (SQL) hạn chế. Nó mở và thân thiện. Nó
liên quan đến các kho dữ liệu. Nó liên quan đến các RDBMS. Nhưng nó không bao
giờ xuất hiện và tuyên bố rằng nó nhiều hơn những gì trông thấy. Hadoop ngắt và
tuyên bố nó là kho dữ liệu cho thế giới Hadoop. Hadoop dường như đã đưa ra đại
diện tiếp thị hay nhất của mình, và những gì rút ra từ một cuộc trò chuyện đơn giản
trở thành Hive và Hadoop cứu rỗi cả thế giới. Điều đó thật hấp dẫn, thú vị. Nhưng
có thật hay không? Hãy tạm coi là như vậy.
Kho dữ liệu
Xây dựng một kho dữ liệu thực sự có thể là một dự án lớn. Có các thiết bị khác
nhau, phương pháp và lý thuyết. Giá trị thông thường thấp nhất là bao nhiêu? Thực
tế như thế nào, và những gì các đối tượng liên quan ngược trở lại các sự kiện đó?
Và làm thế nào để bạn kết hợp, làm cho phù hợp, hợp nhất, và tích hợp các hệ
thống mà có thể đã có từ nhiều thập kỷ trước với các hệ thống chỉ mới thành hiện
thực cách đây vài tháng? Đây là trước dữ liệu lớn và Hadoop. Thêm phi cấu trúc,
dữ liệu, NoSQL và Hadoop vào hỗn hợp, và đột nhiên bạn có một Dự án tích hợp
dữ liệu lớn trong tay bạn.
Cách đơn giản nhất để mô tả một kho dữ liệu là chuyển nó thành các lược đồ sao,
sự kiện, và kích thước. Làm thế nào để bạn tạo ra những yếu tố thực sự là tùy thuộc
vào bạn — cho dù đó là thông qua cơ sở dữ liệu dàn dựng; chiết xuất, chuyển đổi,
quá trình tải, hoặc tích hợp chỉ số phụ ngay lập tức. Chắc chắn, bạn có thể xây
dựng một kho dữ liệu với các lược đồ sao, sự kiện, và kích thước, sử dụng Hive
như công nghệ cốt lõi, nhưng nó sẽ không được dễ dàng. Bên ngoài thế giới
Hadoop, nó trở thành một thách thức lớn hơn. Hive, hiểu rộng ra là sự tích hợp,
chuyển đổi, công cụ tra cứu nhanh chóng so với một kho dữ liệu hợp lệ. Giản đồ có
thể nói kho dữ liệu, nhưng tính hữu dụng thậm chí không nói RDBMS. Vậy thì tại
sao lại đi sử dụng nó?
Thế nào là một giản đồ hình sao
Hãy tưởng tượng một ngôi sao — một trung tâm và vài bàn tay chỉ về những
hướng khác nhau. Trung tâm đó như là nhịp tim, hay còn gọi là fact table (bảng
thực tế). Tất cả bàn tay chỉ về những kích thước khác nhau. Nhiều kho chứa dữ liệu
cũng có một bảng thực tế và có rất nhiều hướng.
Một bảng thực tế bao gồm bất kì một loại dữ liệu nào bạn có thể cân hoặc đếm. Ví
dụ, bạn có một bảng thống kê về bóng chày như điểm số, số cú đánh quyết định,
kết quả trận đấu, v.v.... Bạn có thể tính toán, cộng, trừ hoặc nhân các cột với nhau.
Chiều (Dimensions) phụ thuộc nhiều vào mẫu. Ví dụ, bạn có chiều thông tin của
người chơi, chiều thời gian và ngày, v.v.... Bạn không cần phải tính toán hay cân
các cột trong các chiều đó.
Trong ví dụ này, chìa khóa kết nối các bảng có kích thước khác nhau để thành một
bảng thực tế là playerID.
Đơn giản chỉ cần đặt, đôi khi, bạn phải sử dụng những công cụ đặt trước mặt bạn.
Bất kì người nào hoạt động trong lĩnh vực IT ở bất kì khoảng thời gian nào có thể
nói rằng công cụ phù hợp cho một công việc không phải lúc nào cũng sẵn có. Hay
các công cụ phù hợp lúc nào cũng sẵn có, nhưng trước hết chúng ta phải cân nhắc
đến yếu tố chi phí. Đôi khi yếu tố chính trị của một công ty cũng đóng vai trò rất
lớn. Dù bất kì lí do nào, hầu hết chúng ta đều đang đang băn khoăn nơi nào cần
phải xây dựng, thiết kế và phát triển cách sử dụng công cụ để đạt hiệu quả nhất với
công việc.
Tôi đã tham gia một số lượng lớn các dự án, chúng tôi phải sử dụng Hive như một
cơ sở dữ liệu, như một kho chứa dữ liệu và như một hệ thống thay đổi từ từ. Đó là
một thử thách, đôi khi gây rất nhiều phiền nhiễu. Thỉnh thoảng, bạn phải động não
và trăn trở câu hỏi tại sao. Nhưng đến cuối ngày, bạn vẫn cần làm cho hoạt động.
Và nếu một kho chứa dữ liệu được xây dựng và sử dụng trong Hive, bạn cần thay
đổi từ từ về kích thước và cập nhật cũng như hòa giải những dữ liệu cũ, đó là điều
cần thiết phải thực hiện. Nó không phải luôn là công cụ tốt nhất nhưng tạo ra công
cụ cho bạn làm việc tốt nhất.
Hive
Hive mở ra một khối lượng lớn dữ liệu từ hệ sinh thái Hadoop tới phi chương trình
vì SQL của nó – giống như khả năng và cơ sở dữ liệu hay đó là chức năng. Nó
thường được miêu tả như một kho chứa dữ liệu mà cơ sử hạ tầng được xây dựng
trên đỉnh của Hadoop. Đó là một câu tóm tắt không hoàn chỉnh — đó là khi bạn có
thể chuyển đổi nguồn dữ liệu sang một giản đồ hình sao — nhưng nó thiên về thiết
kế hơn là công nghệ khi bạn tạo một bảng thực tế và một bảng kích thước.
Hive không hẳn là một kho chứa dữ liệu. Nó cũng không hẵn là một cơ sở dữ liệu.
Bạn có thể xây dựng và thiết kế một kho chứa dữ liệu với Hive. Và bạn có thể xây
dựng và thiết kế bảng cơ sở dữ liệu với Hive, nhưng có những hạn chế còn tồn tại
đòi hỏi nhiều cách giải quyết và sẽ đặt ra nhiều thách thức.
Ví dụ, hạn chế của Hive là lập chỉ mục. Bạn giải quyết vấn đề này như thế nào?
Bạn có thể tạo ra một chỉ mục bằng cách sử dụng chức năng
org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler. Hive và việc
thay đổi chiều một cách chậm chạp có thể không chính xác. Nhưng nếu bạn xây
dựng một bảng theo dõi và sử dụng chính xác một lượng (và bạn lên kế hoạch để
thêm nó vào một bảng mới, vứt bỏ bảng cũ và chỉ giữ những cái gần nhất, cập nhật
bảng để đối chiếu), thì nó có khả năng thực hiện được.
Báo cáo bên ngoài và sự phân tích hệ thống kết nối với Hive đã phát hiện được một
vấn đề to lớn. Thậm chí với kế nối JDBC, bạn bị giới hạn chỉ khi kết nối với cơ sở
dữ liệu mặc định. Đã có một sự thúc đẩy hơn và nâng cấp siêu dữ liệu, công cụ như
Apache HCatalog đang giúp kết nối các dịch vụ khác nhau tới siêu kho chứa của
Hive. Trong tương lai, điều này có thể là một bổ sung tuyệt vời nếu sử dụng đúng
cách.
Vì vậy, mặc dù Hive không phải là kho chứa dữ liệu hay cơ sở dữ liệu cố định,
cách tồn tại mà bạn có thể sử dụng Hive là kho chứa dữ liệu hoặc cơ sở dữ liệu.
Chỉ có nỗ lực và một vài các giải quyết để tạo nên hệ thống Hive. Tại sao bạn
không nhìn lại tất cả một lần nữa? Bởi vì bạn phải sử dụng những công cụ sẵn có
và làm cho nó hoạt động.
Ví dụ: Xây dựng kho dữ liệu thông tin bóng chày
Ấn bản InfoSphere BigInsights Quick Start
Ấn bản InfoSphere BigInsights Quick Start Edition là miễn phí, ấn bản cho phép
tải về của InfoSphere BigInsights, dựa trên cơ sở Hadoop của IBM. Sử dụng ấn
bản Quick Start, bạn có thể thử những tính năng mà IBM đã xây dựng để mở rộng
giá trị của mã nguồn mở Hadoop, tương tự Big SQL, phân tích văn bản, và
BigSheets. Các bài hướng dẫn sẽ giúp bạn dễ dàng trải nghiệm sản phẩm, bao gồm
các hướng dẫn từng bước và video để giúp bạn bắt đầu ứng dụng Hadoop vào công
việc của mình. Với việc không giới hạn thời gian và dữ liệu, bạn có thể thử nghiệm
cho riêng mình với những lượng lớn về dữ liệu. Xem videos hướng dẫn, xem các
bài hướng dẫn (PDF) , và tải về ấn bản BigInsights Quick Start.
Thí dụ dữ liệu môn bóng chày sau đây cho thấy làm thế nào để thiết kế và xây
dựng một kho dữ liệu trong Hive, sử dụng dữ liệu môn bóng chày từ trang web của
Sean Lahman. Tôi thích sự thách thức của quá trình chuẩn hóa lại và quá trình xây
dựng một kho dữ liệu từ dữ liệu kia. Trong bài "Xây dựng một thư viện dữ liệu với
Hive," tôi đã tạo ra một máy ảo IBM InfoSphere® BigInsights™ sử dụng VMware
Fusion trên chiếc Apple Macbook. Đó là một thử nghiệm đơn giản, thế là máy ảo
của tôi đã có 1GB về RAM và 20GB về không gian dự trữ đĩa bán dẫn. Hệ thống
hoạt động là bản CentOS 6.4 64-bit distro của Linux®.
Để bắt đầu với ví dụ này, bạn hãy tải về ấn bản IBM InfoSphere BigInsights Basic
(xem phần Tài nguyên). Bạn sẽ cần có một tài khoản IBM Universal hoặc là đăng
ký để có một tài khoản trước đó để có thể tải xuống ấn bản này.
Nhập dữ liệu
Hãy bắt đầu bằng cách tải về tệp CSV chứa các thống kê về môn bóng bầu dục và
các cầu thủ (xem phần Tải về). Từ bên trong Linux, tạo ra một thư mục, sau đó
chạy dòng lệnh:
$ Sudo mkdir /user/baseball.
sudo wget
Trong ví dụ có bốn bảng chính, mỗi bảng ứng với một cột duy nhất — Master
table, Batting, Pitching, và Fielding — và một vài bảng phụ.
Thiết kế kho dữ liệu
Dữ liệu này được cấu trúc cho một thư viện dữ liệu, nhưng thay cho một kho dữ
liệu, bạn phải tưởng tượng ra mặt thực tế và nhiều chiều. Việc thiết kế kho dữ liệu
là đơn giản: bạn chuẩn hóa lại cơ sở dữ liệu này và tạo ra một cơ sở bảng thực tế
trên thống kê cầu thủ. Sau đó bạn tạo ra chiều dựa trên cơ sở của khu vực chủ đề
nhất định liên quan tới những thống kê kia. Hive là không tốt thực sự khi nó tới để
tham gia, và MapReduce không tốt hơn nhiều, vì vậy có một lược đồ sao chuẩn
hóa lại hỗ trợ với những truy vấn chắc chắn.
Việc thiết kế bao gồm một bảng thực tế gọi là fact_Player_Stats, cái đó bao gồm
mỗi cột thống kê thành lập trong các tệp CSV khác nhau và các bảng. Bạn cần dữ
liệu từ những bảng cốt lõi (Batting, Pitching, và Fielding), cũng như từ những bảng
phụ, cũng chứa đựng những thống kê. Bởi vậy, bạn nên thêm những cột thống kê
theo những bảng sau:
AllStarFull
hall of Fame
BattingPost
PitchingPost
FieldingOF
Salaries
AwardsPlayers
AwardsSharePlayers
Appearances
SchoolsPlayers
Một số bảng có duy nhất một vài cột thống kê. Ví dụ như, từ bảng FieldingOF, bạn
cần thêm hạn chế nhiều cột, Glf, Gcf, và Grf tới bảng thực tế fact_Player_Stats.
Đối với bảng SchoolsPlayers, lấy duy nhất cột yearMin và yearMax. Làm các bước
tiếp theo tương tự với các bảng khác. Duy chỉ có cột thống kê là cần trong bảng
thực tế.
Lưu ý: bạn sẽ không sử dụng bất cứ dữ liệu nào từ các bảng Managers, Teams,
TeamsHalf, SeriesPost, v.v....
Bảng thực tế fact_Player_Stats bao gồm duy nhất các khóa playerID, FranchID,
yearID, và SchoolID. Đối với những bảng chiều (dimension), bạn phải lấy ra các
thống kê (nếu có tồn tại) và giữ lại các cột liên quan đến chủ đề:
Bảng chiều dim_Players lấy những dữ liệu (tên cầu thủ, ngày sinh, thông tin
tiểu sử, v.v....) từ bảng chính. Khóa chính là playerID.
Bảng chiều dim_TeamFanchise lấy tất các dữ liệu từ bảng TeamFranchise.
Khóa chính là FranchID.
Bảng chiều dim_Schools lấy các dữ liệu từ bảng Schools.
Dim_Year là bảng theo chiều thời gian dựa trên cơ sở các tháng và các năm
(1871- 2012).
Sử dụng thư viện dữ liệu thay cho kho dữ liệu
Nếu bạn chưa tạo thư viện dữ liệu bóng chày, tôi gợi ý nên làm ngay bây giờ, sau
đó bắt đầu với kho dữ liệu từ các bảng cơ sở kia. Bạn có viết những bản thảo phức
tạp để tóm lấy những cột chắc chắn từ tệp tin phẳng, và tái sự dụng đối với các tệp
tin phẳng tương tự, nhưng thay cho đề mục này, bạn chọn để sử dụng thư viện
được tạo ra trước đây trong bài "Xây dựng thư viện dữ liệu với Hive."
Xây dựng kho dữ liệu với Hive
Với sự phân tích dữ liệu và hoàn thành thiết kế, đó là lúc để xây dựng kho dữ liệu
trên cơ sở của bản phác thảo lược đồ sao của bạn. Trong vỏ Hive, tạo cơ sở dữ liệu
baseball_stats, tạo các bảng, tải các bảng, và xác minh các bảng là đúng. (quá trình
này được đề cập trong bài "Xây dựng thư viện dữ liệu với Hive.") Tiếp theo, tạo
bảng thực tế kho dữ liệu. Liệt kê 1 hiển thị đoạn mã.
Liệt kê 1. Tạo bảng thực tế trong kho dữ liệu
$ Hive
Create Database baseball_stats;
Create table baseball_stats.fact_player_stats as
( SELECT a.playerID, FranchID, yearID, SchoolID, stint int, g int,
g_batting int, ab int, r int, h int, 2b int, 3b int, hr int, rbi int, sb int,
cs int, bb int, so int, ibb int, hbp int, sh int, sf int, gidp int, w int,
l int, g int, gs int, cg int, sho int, sv int, ipouts int, ph int, er int,
phr int, pbb int, pso int, baopp int, era int,pibb int, wp int, phbp int,
bk int, bfp int,gf int, pr int, p sh int, psf int, p gidp int, fg int,
fgs int, innouts int, po int, a int, e int, dp int, pb int, wp int, fsb int,
fcs int, zr int, gamenum int, allstargp int, ballots int, needed int,votes int,
playoff_g int,playoff_ab int, playoff_r int, playoff_h int,
playoff_2b int, playoff_3b int, playoff_hr int, playoff_rbi int, playoff_sb int,
playoff_cs int, playoff_bb int, playoff_so int, playoff_ibb int, playoff_hbp int,
playoff_sh int, playoff_sh, playoff_sf int, playoff_gidp int, pitchplayoff_w int,
pitchplayoff_l int, pitchplayoff_g int, pitchplayoff_gs int, pitchplayoff_ cg int,
pitchplayoff_sho int, pitchplayoff_sv int, pitchplayoff_ipouts int,
pitchplayoff_h int,pitchplayoff_er int, pitchplayoff_hr int, pitchplayoff_bb int,
pitchplayoff_so int, pitchplayoff_baopp int, pitchplayoff_era int, pitchplayoff_ibb
int,
pitchplayoff_wp int,pitchplayoff_hbp int, pitchplayoff_bk int, pitchplayoff_BFP
int,
pitchplayoff_gf int, pitchplayoff_r int, pitchplayoff_sh int, pitchplayoff_sf int,
pitchplayoff_gidp int, glf int, grf int, gcf int, salary double, award int,
fieldplayoffs_g int, fieldplayoffs_gs int, fieldplayoffs_innouts int,
fieldplayoffs_po int, fieldplayoffs_a int, fieldplayoffs_e int, fieldplayoffs_dp int,
fieldplayoffs_dp int,fieldplayoffs_tp int, fieldplayoffs_pb int, fieldplayoffs_sb int,
fieldplayoffs_cs int, appearances_g_all int, appearances_gs int,
appearances_g_batting int, appearances_defense int,
appearances_g_p int, appearances_g_c int, appearances_g_1b int,
appearances_g_2b int, appearances_g_3b int, appearances_g_ss int,
appearances_g_ss int,
appearances_g_lf int, appearances_g_cf int, appearances_g_rf int, appearances_dh
int,
appearances_ph int, appearances_pr int, yearMin double, yearMax double
from baseball.Batting B JOIN Pitching P ON B.playerid = P.playerID
JOIN fielding F ON B.playerID = F.playerID
JOIN Team T ON b.teamid = t.teamid JOIN TeamFranchises TF ON
t.franchid = tf.franchid ...);
Bây giờ, tạo bảng theo chiều trong kho dữ liệu. Liệt kê 2 hiển thị đoạn mã.
Liệt kê 2. Tạo bảng theo chiều trong kho dữ liệu
$ Hive
Create table baseball_stats.dim_Players AS
( SELECT lahmanID int, playerID int, managerID int, hofID int, birthyear
INT,
birthMonth INT, birthDay INT, birthCountry STRING, birthState STRING,
birthCity STRING, deathYear INT, deathMonth INT,deathDay INT,
deathCountry STRING, deathState STRING, deathCity STRING,
nameFirst STRING, nameLast STRING, nameNote STRING, nameGive
STRING,
nameNick STRING, weight decimal, height decimal, bats STRING,
throws STRING, debut INT, finalGame INT,
college STRING, lahman40ID INT, lahman45ID INT, retroID INT,
holtzID INT, hbrefID INT
FROM baseball.master .... );
Chạy câu truy vấn
Nào chúng ta cùng chạy một số truy vấn để chắc chắn rằng dữ liệu thể hiện một
cách chính xác. Đầu tiên, hãy lựa chọn tất cả các dữ liệu từ bảng thực tế (giới hạn
đầu tiên khoảng 10 dòng). Bạn có thể chạy một cặp truy vấn khác để bảo đảm rằng
kích thước bảng của chúng cũng đúng, khi đó thì chúng có thể kết nối được với
bảng thực tế v.v.. Bạn cũng có thể chạy 1 số lượng dữ liệu nào đó trong bảng thực
tế để đảm bảo tổng các dòng xếp thành hàng. Tất nhiên, bạn sẽ phải tương quan
đồng nhất với các bảng cơ sở dữ liệu ban đầu rồi mới thêm chúng. Liệt kê 3 hiển
thị đoạn mã để kiểm tra khi dữ liệu có tồn tại và chính xác hay không và kích
thước của chúng có kết nối được với bảng thực tế hay không.
Liệt kê 3. Kiểm tra để xem dữ liệu có tồn tại và chính xác chiều kết nối với bảng
thực tế không
$ HIVE
Use baseball_stats;
Select * from fact_player_stats limit 10;
Select A.PlayerID, A.name, B.teamID, B.AB, B.R, B.H, B.2B, B.3B,
B.HR, B.RBI
FROM dim_players A JOIN fact_player_stats B ON a.playerid = b.playerid;
Select count(*) from fact_player_stats;
Select count(*) from dim_players.
Select max(r) from fact_player_stats where playerid=1234;
Nếu bạn muốn xác nhận một cách kỹ lưỡng hơn về các dữ liệu trong kho dữ liệu
Hive. Bạn có thể sử dụng giá trị nhỏ nhất, giá trị lớn nhất hay giá trị trung bình
trong những cột chắc chắn hay thậm chí tất cả các cột và so sánh kết quả của chúng
so với bảng cơ sở dữ liệu ban đầu. Bạn sẽ tìm thấy được sự kết nối chính xác.
Kết luận
Nhiều công việc thiết kế hứa hẹn sẽ đi vào việc tạo ra một giản đồ sao đơn giản,
giả dụ bạn có thể trở lại và tạo ra một bảng thực tế dựa trên nhóm của mình. Lợi
ích của giản đồ kho dữ liệu là bạn sẽ không phải tham gia vào nhiều bảng. Có rất ít
thông tin cập nhật bên cạnh những số liệu đã cho hằng năm, trong trường hợp này,
thì việc ghi đè lên các bảng chứa kho dữ liệu hoặc thêm một năm rồi tính toán lại
không phải là một vấn đề.
Hive chắc chắn cũng có những hạn chế, nhưng nếu bạn đang làm việc trên một
ngân sách hoặc các công cụ đã được giao nhiệm vụ từ trên cao, với một chút công
việc, Hive có thể cung cấp cho bạn các kho dữ liệu bạn cần.