Hướng dẫn về Hive - Kiến trúc Hive và Nghiên cứu điển hình của NASA



Blog hướng dẫn Hive này cung cấp cho bạn kiến ​​thức chuyên sâu về Kiến trúc Hive và Mô hình dữ liệu Hive. Nó cũng giải thích cho nghiên cứu điển hình của NASA về Apache Hive.

Hướng dẫn Apache Hive: Giới thiệu

Hive là công cụ được sử dụng rộng rãi trong toàn ngành cho Phân tích dữ liệu lớn và là công cụ tuyệt vời để bắt đầu với. Trong blog hướng dẫn về Hive này, chúng ta sẽ thảo luận sâu hơn về Apache Hive. Apache Hive là một công cụ lưu trữ dữ liệu trong , cung cấp ngôn ngữ giống như SQL để truy vấn và phân tích Dữ liệu lớn. Động lực đằng sau sự phát triển của Hive là con đường học tập ít ma sát cho các nhà phát triển và nhà phân tích SQL. Hive không chỉ là cứu tinh cho những người không rành về lập trình, mà nó còn giảm bớt công việc của những lập trình viên dành nhiều giờ để viết chương trình MapReduce. Trong blog Hướng dẫn Apache Hive này, tôi sẽ nói về:



Hướng dẫn sử dụng Apache Hive: Hive là gì?

Apache Hive là một hệ thống kho dữ liệu được xây dựng dựa trên Hadoop và được sử dụng để phân tích dữ liệu có cấu trúc và bán cấu trúc.Hive tóm tắt sự phức tạp của Hadoop MapReduce. Về cơ bản, nó cung cấp một cơ chế để chiếu cấu trúc lên dữ liệu và thực hiện các truy vấn được viết bằng HQL (Hive Query Language) tương tự như các câu lệnh SQL. Trong nội bộ, các truy vấn hoặc HQL này được trình biên dịch Hive chuyển đổi thành bản đồ giảm bớt các công việc. Do đó, bạn không cần phải lo lắng về việc viết các chương trình MapReduce phức tạp để xử lý dữ liệu của mình bằng Hadoop. Nó được nhắm mục tiêu tới những người dùng đã quen với SQL. Apache Hive hỗ trợ Ngôn ngữ Định nghĩa Dữ liệu (DDL), Ngôn ngữ Thao tác Dữ liệu (DML) và Chức năng Người dùng Xác định (UDF).

Hướng dẫn về Hive cho người mới bắt đầu | Hiểu sâu về Hive | Edureka



SQL + Hadoop MapReduce = HiveQL

Hướng dẫn sử dụng Apache Hive: Câu chuyện về Hive - từ Facebook đến Apache

Trường hợp sử dụng Facebook - Hướng dẫn Hive - EdurekaQuả sung : Hive Tutorial - Trường hợp sử dụng Facebook

Những thách thức tại Facebook: Tăng trưởng dữ liệu theo cấp số nhân

Trước năm 2008, tất cả cơ sở hạ tầng xử lý dữ liệu trong Facebook đều được xây dựng xung quanh kho dữ liệu dựa trên RDBMS thương mại. Những cơ sở hạ tầng này đủ khả năng để đáp ứng nhu cầu của Facebook vào thời điểm đó. Tuy nhiên, khi dữ liệu bắt đầu phát triển rất nhanh, nó trở thành một thách thức lớn để quản lý và xử lý tập dữ liệu khổng lồ này. Theo một bài báo của Facebook, dữ liệu được chia tỷ lệ từ tập dữ liệu 15 TB vào năm 2007 thành dữ liệu 2 PB vào năm 2009. Ngoài ra, nhiều sản phẩm của Facebook liên quan đến phân tích dữ liệu như Audience Insights, Facebook Lexicon, Facebook Ads, v.v. Vì vậy, họ cần một giải pháp có thể mở rộng và kinh tế để đối phó với chính vấn đề này và do đó đã bắt đầu sử dụng khung Hadoop.



Dân chủ hóa Hadoop - MapReduce

Tuy nhiên, khi dữ liệu tăng lên, độ phức tạp của mã Map-Reduce cũng tăng theo tỷ lệ thuận. Vì vậy, việc đào tạo những người không có kiến ​​thức về lập trình để viết các chương trình MapReduce trở nên khó khăn. Ngoài ra, để thực hiện phân tích đơn giản, người ta phải viết hàng trăm dòng mã MapReduce. Vì SQL được sử dụng rộng rãi bởi các kỹ sư và nhà phân tích, bao gồm cả Facebook, do đó, đặt SQL lên trên Hadoop dường như là một cách hợp lý để làm cho Hadoop có thể truy cập được đối với người dùng có nền tảng SQL.

Do đó, khả năng đáp ứng của SQL cho hầu hết các yêu cầu phân tích và khả năng mở rộng của Hadoop đã sinh ra Apache Hive cho phép thực hiện các truy vấn SQL giống như trên dữ liệu có trong HDFS. Sau đó, dự án Hive được Facebook mở nguồn vào tháng 8 năm 2008 và được cung cấp miễn phí với tên gọi Apache Hive ngày nay.

Bây giờ, chúng ta hãy xem xét các tính năng hoặc lợi thế của Hive khiến nó trở nên phổ biến.

Hướng dẫn Apache Hive: Ưu điểm của Hive

  • Hữu ích cho những người không có nền tảng lập trình vì nó giúp loại bỏ nhu cầu viết chương trình MapReduce phức tạp.
  • Có thể mở rộngcó thể mở rộng để đối phó với khối lượng ngày càng tăng và nhiều loại dữ liệu, mà không ảnh hưởng đến hiệu suất của hệ thống.
  • Nó là một công cụ ETL (Trích xuất, Biến đổi, Tải) hiệu quả.
  • Hive hỗ trợ bất kỳ ứng dụng khách nào được viết bằng Java, PHP, Python, C ++ hoặc Ruby bằng cách trình bày Máy chủ tiết kiệm . (Bạn có thể sử dụng các ngôn ngữ phía máy khách này được nhúng với SQL để truy cập cơ sở dữ liệu như DB2, v.v.).
  • Vì thông tin siêu dữ liệu của Hive được lưu trữ trong RDBMS, nó làm giảm đáng kể thời gian thực hiện kiểm tra ngữ nghĩa trong quá trình thực thi truy vấn.

Hướng dẫn sử dụng Apache Hive: Sử dụng Apache Hive ở đâu?

Apache Hive tận dụng cả hai thế giới, tức là Hệ thống cơ sở dữ liệu SQL và khuôn khổ. Do đó, nó được sử dụng bởi vô số công ty. Nó chủ yếu được sử dụng để lưu trữ dữ liệu, nơi bạn có thể thực hiện phân tích và khai thác dữ liệu mà không yêu cầu xử lý thời gian thực. Một số trường mà bạn có thể sử dụng Apache Hive như sau:

  • Kho dữ liệu
  • Phân tích đặc biệt

Như người ta đã nói, bạn không thể vỗ tay chỉ bằng một tay, tức là bạn không thể giải quyết mọi vấn đề với một công cụ duy nhất. Do đó, bạn có thể kết hợp Hive với các công cụ khác để sử dụng nó trong nhiều miền khác. Ví dụ: Tableau cùng với Apache Hive có thể được sử dụng để Trực quan hóa dữ liệu, tích hợp Apache Tez với Hive sẽ cung cấp cho bạn khả năng xử lý thời gian thực, v.v.
Tiếp tục trong blog Hướng dẫn Apache Hive này, chúng ta hãy xem một nghiên cứu điển hình của NASA, nơi bạn sẽ biết cách Hive giải quyết vấn đề mà các nhà khoa học NASA đang gặp phải khi thực hiện đánh giá Mô hình khí hậu.

Hive Tutorial: Nghiên cứu điển hình của NASA

Mô hình khí hậu là một biểu diễn toán học của các hệ thống khí hậu dựa trên các yếu tố khác nhau tác động đến khí hậu của Trái đất. Về cơ bản, nó mô tả sự tương tác của các tác nhân khác nhau của khí hậu như đại dương, mặt trời, khí quyển, v.v. đểcung cấp một cái nhìn sâu sắc về động lực của hệ thống khí hậu. Nó được sử dụng để dự đoán các điều kiện khí hậu bằng cách mô phỏng sự thay đổi khí hậu dựa trên các yếu tố ảnh hưởng đến khí hậu. Phòng thí nghiệm Sức đẩy Phản lực của NASA đã phát triển Hệ thống Đánh giá Mô hình Khí hậu Khu vực (RCMES) để phân tích và đánh giá mô hình đầu ra khí hậu dựa trên dữ liệu viễn thám có trong các kho lưu trữ bên ngoài khác nhau.

RCMES (Hệ thống đánh giá mô hình khí hậu khu vực) có hai thành phần:

  • RCMED (Cơ sở dữ liệu đánh giá mô hình khí hậu khu vực):

Đây là một cơ sở dữ liệu đám mây có thể mở rộng tải dữ liệu viễn thám và dữ liệu phân tích lại có liên quan đến khí hậu bằng cách sử dụng các trình trích xuất như trình trích xuất Apache OODT, Apache Tika, v.v. Cuối cùng, nó biến đổi dữ liệu thành mô hình điểm dữ liệu có dạng (vĩ độ , kinh độ, thời gian, giá trị, chiều cao) và lưu trữ nó vào cơ sở dữ liệu SQL của tôi. Máy khách có thể truy xuất dữ liệu có trong RCMED bằng cách thực hiện các truy vấn Không gian / Thời gian. Mô tả của các truy vấn như vậy không phù hợp với chúng tôi bây giờ.

  • RCMET (Bộ công cụ đánh giá mô hình khí hậu khu vực):

Nó cung cấp cho người dùng khả năng so sánh dữ liệu tham chiếu có trong RCMED với dữ liệu đầu ra của mô hình khí hậu được lấy từ một số nguồn khác để thực hiện các loại phân tích và đánh giá khác nhau. Bạn có thể tham khảo hình ảnh dưới đây để hiểu kiến ​​trúc của RCMES.

cách tạo một mảng đối tượng trong java

Dữ liệu tham khảo trong RCMED đến từ viễn thám dựa trên vệ tinh, theo các tham số khác nhau cần thiết để đánh giá mô hình khí hậu. Ví dụ - AIRS (Máy đo âm thanh hồng ngoại khí quyển) cung cấp các thông số như nhiệt độ không khí bề mặt, nhiệt độ và Vị trí địa lý, TRMM (Nhiệm vụ đo lượng mưa nhiệt đới) cung cấp lượng mưa hàng tháng, v.v.

Các vấn đề NASA gặp phải khi sử dụng Hệ thống cơ sở dữ liệu MySQL:

  • Sau khi tải cơ sở dữ liệu MySQL với 6 tỷ bộ dữ liệu có dạng (vĩ độ, kinh độ, thời gian, giá trị điểm dữ liệu, độ cao), hệ thống đã bị sập như thể hiện trong hình trên.
  • Ngay cả sau khi chia toàn bộ bảng thành các tập con nhỏ hơn, hệ thống đã tạo ra chi phí lớn trong khi xử lý dữ liệu.

Vì vậy, họ cần một giải pháp có khả năng mở rộng có thể lưu trữ và xử lý lượng dữ liệu khổng lồ này với SQL như khả năng truy vấn. Cuối cùng, họ quyết định sử dụng Apache Hive để khắc phục các vấn đề đã nêu ở trên.

Apache Hive có thể giải quyết vấn đề như thế nào?

Bây giờ, hãy xem, những tính năng đó đã thuyết phục nhóm JPL của NASA đưa Apache Hive vào làm một phần không thể thiếu trong chiến lược giải pháp của họ là gì:

  • Vì Apache Hive chạy trên Hadoop, nó có khả năng mở rộng và có thể xử lý dữ liệu theo kiểu phân tán và song song.
  • Nó cung cấp Ngôn ngữ truy vấn Hive tương tự như SQL và do đó dễ học.

Triển khai Hive:

Hình ảnh sau đây giải thích RCMES Architect với tích hợp Apache Hive:

Quả sung : Hướng dẫn về Hive - Kiến trúc RCMES với Apache Hive

Hình ảnh trên cho thấy việc triển khai apache hive trong RCMES. Nhóm NASA đã thực hiện các bước sau khi triển khai Apache Hive:

  • Họ đã cài đặt Hive bằng Cloudera và Apache Hadoop như trong hình trên.
  • Họ đã sử dụng Apache Sqoop để nhập dữ liệu vào Hive từ cơ sở dữ liệu MySQL.
  • Apache OODT wrapper đã được triển khai để thực hiện các truy vấn trên Hive và truy xuất dữ liệu trở lại RCMET.

Các quan sát đo điểm chuẩn ban đầu với Hive:

  • Ban đầu, họ tải 2,5 tỷ điểm dữ liệu vào một bảng và thực hiện truy vấn đếm. Ví dụ, Hive> chọn số lượng (datapoint_id) từ dataPoint. Mất 5-6 phút để đếm tất cả các bản ghi (15–17 phút cho 6,8 tỷ bản ghi đầy đủ).
  • Giai đoạn giảm tốc diễn ra nhanh chóng, nhưng giai đoạn bản đồ chiếm 95% tổng thời gian xử lý. Họ đã sử dụng sáu ( 4x lõi tứ ) hệ thống với RAM 24 GB (ước chừng) trong mỗi hệ thống.
  • Ngay cả sau khi thêm nhiều máy hơn, thay đổi kích thước khối HDFS (64 MB, 128 MB, 256 MB) và thay đổi nhiều biến cấu hình khác (io.sắp xếp.yếu tố, tôi.sắp xếp.mb), họ không đạt được nhiều thành công trong việc giảm thời gian hoàn thành việc đếm.

Đầu vào từ các thành viên của Cộng đồng Hive:

Cuối cùng, các thành viên của cộng đồng Hive đã đến giải cứu và cung cấp nhiều hiểu biết khác nhau để giải quyết các vấn đề với việc triển khai Hive hiện tại của họ:

  • Họ đề cập rằng tốc độ đọc HDFS xấp xỉ 60 MB / s so với 1GB / giây trong trường hợp là đĩa cục bộ, tùy thuộc vào dung lượng mạng và khối lượng công việc trên NameNode.
  • Các thành viên đề nghị rằng 16 người lập bản đồ sẽ được yêu cầu trong hệ thống hiện tại của họ để phù hợp với hiệu suất I / O của tác vụ cục bộ không phải Hadoop.
  • Họ cũng đề xuất giảm kích thước chia nhỏ cho mỗi người lập bản đồ để tăng số lượngcủavà do đó, cung cấp tính song song hơn.
  • Cuối cùng, các thành viên trong cộng đồng yêu cầu họ sử dụng số lượng (1) thay vì đề cập đến đếm ( datapoint_id) . Điều này là do trong trường hợp đếm (1), không có cột tham chiếu và do đó, không có giải nén và giải nén diễn ra trong khi thực hiện đếm.

Cuối cùng, NASA đã có thể điều chỉnh cụm Hive của họ theo mong đợi của họ bằng cách tính đến tất cả các đề xuất mà các thành viên cộng đồng Hive đưa ra. Và do đó, họ có thể truy vấn hàng tỷ hàng chỉ trong 15 giây bằng cách sử dụng các cấu hình hệ thống được đề cập ở trên.

Hướng dẫn Apache Hive: Kiến trúc Hive và các thành phần của nó

Hình ảnh sau đây mô tả Kiến trúc Hive và luồng trong đó truy vấn được gửi vàoHivevà cuối cùng được xử lý bằng cách sử dụng khung MapReduce:

Quả sung : Hướng dẫn Hive - Kiến trúc Hive

Như thể hiện trong hình trên, Kiến trúc Hive có thể được phân loại thành các thành phần sau:

  • Khách hàng Hive: Hive hỗ trợ ứng dụng được viết bằng nhiều ngôn ngữ như Java, C ++, Python, v.v. sử dụng trình điều khiển JDBC, Thrift và ODBC. Do đó, người ta luôn có thể viết ứng dụng khách hàng hive được viết bằng ngôn ngữ mà họ chọn.
  • Dịch vụ Hive: Apache Hive cung cấp các dịch vụ khác nhau như CLI, Web Interface, v.v. để thực hiện các truy vấn. Chúng ta sẽ khám phá từng cái trong số chúng ngay trong blog hướng dẫn Hive này.
  • Khung xử lý và Quản lý tài nguyên: Trong nội bộ,Hive sử dụng khung Hadoop MapReduce làm công cụ trên thực tế để thực thi các truy vấn. là một chủ đề riêng biệt và do đó, không được thảo luận ở đây.
  • Bộ nhớ phân tán: Vì Hive được cài đặt trên Hadoop, nó sử dụng HDFS bên dưới cho bộ nhớ phân tán. Bạn có thể tham khảo Blog HDFS để tìm hiểu thêm về nó.

Bây giờ, chúng ta hãy khám phá hai thành phần chính đầu tiên trong Kiến trúc Hive:

1. Hive khách hàng:

Apache Hive hỗ trợ các loại ứng dụng khách khác nhau để thực hiện các truy vấn trên Hive. Những khách hàng này có thể được phân loại thành ba loại:

  • Khách hàng tiết kiệm: Vì máy chủ Hive dựa trên Apache Thrift, nó có thể phục vụ yêu cầu từ tất cả các ngôn ngữ lập trình hỗ trợ Thrift.
  • Khách hàng JDBC: Hive cho phép các ứng dụng Java kết nối với nó bằng cách sử dụng trình điều khiển JDBC được định nghĩa trong tổ chức lớp.apache.hadoop.hive.jdbc.HiveDriver.
  • Khách hàng ODBC: Trình điều khiển ODBC Hive cho phép các ứng dụng hỗ trợ giao thức ODBC kết nối với Hive. (Giống như trình điều khiển JDBC, trình điều khiển ODBC sử dụng Thrift để giao tiếp với máy chủ Hive.)

2. Dịch vụ Hive:

Hive cung cấp nhiều dịch vụ như trong hình trên. Hãy để chúng tôi xem xét từng người trong số họ:

  • Hive CLI (Giao diện dòng lệnh): Đây là trình bao mặc định được cung cấp bởi Hive, nơi bạn có thể thực hiện các truy vấn và lệnh Hive của mình trực tiếp.
  • Giao diện web Apache Hive: Ngoài giao diện dòng lệnh, Hive cũng cung cấp GUI dựa trên web để thực hiện các truy vấn và lệnh Hive.
  • Máy chủ Hive: Máy chủ Hive được xây dựng dựa trên Apache Thrift và do đó, còn được gọi là Máy chủ Thrift cho phép các máy khách khác nhau gửi yêu cầu đến Hive và lấy kết quả cuối cùng.
  • Trình điều khiển Apache Hive: Nó có trách nhiệm nhận các truy vấn do khách hàng gửi qua CLI, giao diện người dùng web, Thrift, ODBC hoặc JDBC. Sau đó, trình điều khiển chuyển truy vấn tới trình biên dịch, nơi diễn ra quá trình phân tích cú pháp, kiểm tra kiểu và phân tích ngữ nghĩa với sự trợ giúp của lược đồ có mặt trong siêu thị. Trong bước tiếp theo, một kế hoạch logic được tối ưu hóa được tạo ra dưới dạng DAG (Đồ thị vòng tròn được hướng dẫn) của các tác vụ thu nhỏ bản đồ và các tác vụ HDFS. Cuối cùng, công cụ thực thi thực hiện các tác vụ này theo thứ tự phụ thuộc của chúng, sử dụng Hadoop.
  • Cơ sở dữ liệu: Bạn có thể nghĩ rằng di cănnhư một kho lưu trữ trung tâm để lưu trữ tất cả thông tin siêu dữ liệu Hive. Siêu dữ liệu Hive bao gồm nhiều loại thông tin khác nhau như cấu trúc của bảng và phân vùngcùng với cột, loại cột, bộ tuần tự và bộ khử không khí cần cho hoạt động Đọc / Ghi trên dữ liệu có trong HDFS. Nhà di cănbao gồm hai đơn vị cơ bản:
    • Một dịch vụ cung cấp siêu thịtruy cập vào otherDịch vụ Hive.
    • Ổ đĩa lưu trữ siêu dữ liệu tách biệt với lưu trữ HDFS.

Bây giờ, chúng ta hãy hiểu các cách khác nhau để triển khai Hive di căntrong phần tiếp theo của Hướng dẫn Hive này.

Hướng dẫn Apache Hive: Cấu hình kho lưu trữ

Metastore lưu trữ thông tin siêu dữ liệu bằng cách sử dụng RDBMS và một lớp ORM (Mô hình quan hệ đối tượng) mã nguồn mở được gọi là Hạt nhân dữ liệu chuyển đổi biểu diễn đối tượng thành lược đồ quan hệ và ngược lại. Lý do chọn RDBMS thay vì HDFS là để đạt được độ trễ thấp. Chúng ta có thể triển khai hệ thống di căn trong ba cấu hình sau:

1. Cơ sở dữ liệu được nhúng:

Theo mặc định, cả dịch vụ di căn và dịch vụ Hive đều chạy trong cùng một JVM bằng cách sử dụng phiên bản Cơ sở dữ liệu Derby được nhúng trong đó siêu dữ liệu được lưu trữ trong đĩa cục bộ. Đây được gọi là cấu hình di căn nhúng. Trong trường hợp này, chỉ có một người dùng có thể kết nối với cơ sở dữ liệu di căn tại một thời điểm. Nếu bạn khởi động phiên bản thứ hai của trình điều khiển Hive, bạn sẽ gặp lỗi. Điều này tốt cho thử nghiệm đơn vị, nhưng không tốt cho các giải pháp thực tế.

2. Cơ sở dữ liệu cục bộ:

Cấu hình này cho phép chúng tôi có nhiều phiên Hive, tức là nhiều người dùng có thể sử dụng cơ sở dữ liệu di căn cùng một lúc. Điều này đạt được bằng cách sử dụng bất kỳ cơ sở dữ liệu tương thích JDBC nào như MySQL chạy trong một JVM riêng biệt hoặc một máy khác với dịch vụ Hive và dịch vụ di căn đang chạy trong cùng một JVM như được hiển thị ở trên. Nói chung, sự lựa chọn phổ biến nhất là cài đặt máy chủ MySQL làm cơ sở dữ liệu di động.

3. Từ xa Metastore:

Trong cấu hình di căn từ xa, dịch vụ di căn chạy trên JVM riêng biệt của chính nó và không chạy trong JVM của dịch vụ Hive. Các quy trình khác giao tiếp với máy chủ di căn bằng API mạng Thrift. Bạn có thể có một hoặc nhiều máy chủ di căn trong trường hợp này để cung cấp thêm tính khả dụng.Ưu điểm chính của việc sử dụng di căn từ xa là bạn không cần phải chia sẻ thông tin đăng nhập JDBC với mỗi người dùng Hive để truy cập cơ sở dữ liệu di căn từ xa.

Hướng dẫn Apache Hive: Mô hình dữ liệu

Dữ liệu trong Hive có thể được phân loại thành ba loại ở cấp độ chi tiết:

  • Bàn
  • Vách ngăn
  • Gầu múc

Những cái bàn:

Các bảng trong Hive cũng giống như các bảng trong Cơ sở dữ liệu quan hệ. Bạn có thể thực hiện các hoạt động lọc, dự án, tham gia và kết hợp trên chúng. Có hai loại bảng trong Hive:

1. Bảng được quản lý:

Chỉ huy:

TẠO BẢNG (kiểu_dữ liệu cột1, kiểu_dữ liệu cột 2)

TẢI DỮ LIỆU INPATH VÀO bảng Managed_table

Như tên cho thấy (bảng được quản lý), Hive chịu trách nhiệm quản lý dữ liệu của một bảng được quản lý. Nói cách khác, ý tôi muốn nói “Hive quản lý dữ liệu” là nếu bạn tải dữ liệu từ một tệp có trong HDFS vào một Hive Bảng được quản lý và đưa ra lệnh DROP trên đó, bảng cùng với siêu dữ liệu của nó sẽ bị xóa. Vì vậy, dữ liệu thuộc về quản lý không còn tồn tại ở bất kỳ đâu trong HDFS và bạn không thể truy xuất nó bằng bất kỳ cách nào. Về cơ bản, bạn đang di chuyển dữ liệu khi bạn phát lệnh LOAD từ vị trí tệp HDFS sang thư mục kho Hive.

Ghi chú: Đường dẫn mặc định của thư mục kho được đặt thành / user / hive / kho. Dữ liệu của bảng Hive nằm trong kho_directory / tên_bảng (HDFS). Bạn cũng có thể chỉ định đường dẫn của thư mục kho trong tham số cấu hình hive.metastore.warehouse.dir có trong hive-site.xml.

2. Bảng bên ngoài:

Chỉ huy:

TẠO BẢNG BÊN NGOÀI (kiểu_dữ_liệu_cột1, kiểu_số_liệu_của cột2)

TẢI DỮ LIỆU INPATH ‘’ VÀO BẢNG

Đối với bảng bên ngoài , Hive không chịu trách nhiệm quản lý dữ liệu. Trong trường hợp này, khi bạn đưa ra lệnh LOAD, Hive sẽ di chuyển dữ liệu vào thư mục kho của nó. Sau đó, Hive tạo thông tin siêu dữ liệu cho bảng bên ngoài. Bây giờ, nếu bạn phát hành lệnh DROP trên bảng bên ngoài , chỉ thông tin siêu dữ liệu liên quan đến bảng bên ngoài sẽ bị xóa. Do đó, bạn vẫn có thể truy xuất dữ liệu của bảng bên ngoài đó từ thư mục kho bằng các lệnh HDFS.

Các phần:

Chỉ huy:

TẠO BẢNG tên_bảng (kiểu_dữ_liệu_cột1, kiểu_dữ_liệu_cột2) ĐƯỢC PHỤ GIA BỞI (kiểu_dữ liệu phân vùng1, kiểu_dữ liệu phân vùng2, & hellip.)

Hive tổ chức các bảng thành các phân vùng để nhóm các loại dữ liệu tương tự lại với nhau dựa trên một cột hoặc khóa phân vùng. Mỗi Bảng có thể có một hoặc nhiều khóa phân vùng để xác định một phân vùng cụ thể. Điều này cho phép chúng tôi truy vấn nhanh hơn trên các phần dữ liệu.

Ghi chú: Hãy nhớ rằng, lỗi phổ biến nhất mắc phải khi tạo phân vùng là chỉ định tên cột hiện có làm cột phân vùng. Trong khi làm như vậy, bạn sẽ nhận được lỗi - “Lỗi trong phân tích ngữ nghĩa: Cột lặp lại trong các cột phân vùng”.

Hãy để chúng tôi hiểu phân vùng bằng cách lấy một ví dụ trong đó tôi có một bảng student_details chứa thông tin sinh viên của một số trường đại học kỹ thuật như student_id, tên, khoa, năm, v.v. Bây giờ, nếu tôi thực hiện phân vùng dựa trên cột khoa, thông tin của tất cả các sinh viên thuộc về một bộ phận cụ thể sẽ được lưu trữ cùng nhau trong chính phân vùng đó. Về mặt vật lý, một phân vùng không là gì ngoài một thư mục con trong thư mục bảng.

Giả sử chúng tôi có dữ liệu cho ba khoa trong bảng student_details - CSE, ECE và Civil. Do đó, chúng ta sẽ có tổng cộng ba phân vùng cho mỗi phòng ban như thể hiện trong hình bên dưới. Và, đối với mỗi bộ phận, chúng tôi sẽ có tất cả dữ liệu liên quan đến bộ phận đó nằm trong một thư mục con riêng biệt trong thư mục bảng Hive. Ví dụ: tất cả dữ liệu sinh viên liên quan đến các khoa CSE sẽ được lưu trữ trong user / hive / kho / student_details / dept. = CSE. Vì vậy, các truy vấn liên quan đến sinh viên CSE sẽ chỉ phải xem qua dữ liệu có trong phân vùng CSE. Điều này làm cho việc phân vùng trở nên rất hữu ích vì nó làm giảm độ trễ truy vấn bằng cách chỉ quét liên quan, thích hợp dữ liệu được phân vùng thay vì toàn bộ tập dữ liệu. Trên thực tế, trong việc triển khai thế giới thực, bạn sẽ phải xử lý hàng trăm TB dữ liệu. Vì vậy, hãy tưởng tượng việc quét lượng dữ liệu khổng lồ này cho một số truy vấn, nơi 95% dữ liệu do bạn quét không liên quan đến truy vấn của bạn.

Tôi khuyên bạn nên xem qua blog trên Lệnh Hive nơi bạn sẽ tìm thấy các cách khác nhau để triển khai phân vùng với một ví dụ.

Gầu:

Lệnh:

TẠO BẢNG tên_bảng_bảng_GIÁ BẰNG PHẦN BẰNG (kiểu_dữ_liệu_phân_kích, kiểu_số_lượng phân vùng2, & hellip.) ĐƯỢC CHỈNH SỬA BỞI (tên_mạch1, tên_bài2,…) ĐƯỢC SẮP XẾP THEO (tên_cột [ASC | DESC],…)] VÀO num_buckets BUCKETS

Bây giờ, bạn có thể chia từng phân vùng hoặc bảng chưa được phân vùng thành Nhóm dựa trên hàm băm của một cột trong bảng. Trên thực tế, mỗi thùng chỉ là một tệp trong thư mục phân vùng hoặc thư mục bảng (bảng không phân vùng). Do đó, nếu bạn đã chọn chia các phân vùng thành n nhóm, bạn sẽ có n tệp trong mỗi thư mục phân vùng của mình. Ví dụ, bạn có thể thấy hình ảnh trên, nơi chúng tôi đã phân vùng mỗi phân vùng thành 2 nhóm. Vì vậy, mỗi phân vùng, chẳng hạn như CSE, sẽ có hai tệp trong đó mỗi tệp sẽ lưu trữ dữ liệu của sinh viên CSE.

Làm thế nào Hive phân phối các hàng thành các nhóm?

Hive xác định số nhóm cho một hàng bằng cách sử dụng công thức: mô-đun hàm băm (bucketing_column) (num_of_buckets) . Đây, hhàm tro phụ thuộc vào kiểu dữ liệu cột. Ví dụ: nếu bạn đang bán đấu giá bảng trên cơ sở một số cột, giả sử user_id của kiểu dữ liệu INT, hàm băm sẽ là - hàm băm (user_id ) = giá trị số nguyên của user_id . Và, giả sử bạn đã tạo hai nhóm, thì Hive sẽ xác định các hàng sẽ đến nhóm 1 trong mỗi phân vùng bằng cách tính toán: (giá trị của user_id) modulo (2). Do đó, trong trường hợp này, các hàng có user_id kết thúc bằng chữ số nguyên chẵn sẽ nằm trong cùng một nhóm tương ứng với mỗi phân vùng. Hàm băm cho các kiểu dữ liệu khác hơi phức tạp để tính toán và trên thực tế, đối với một chuỗi, con người thậm chí không thể nhận ra được.

Ghi chú: Nếu bạn đang sử dụng Apache Hive 0.x hoặc 1.x, bạn phải phát lệnh - set hive.enforce.bucketing = true từ thiết bị đầu cuối Hive của bạn trước khi thực hiện bán vé. Điều này sẽ cho phép bạn có số lượng bộ rút gọn chính xác trong khi sử dụng mệnh đề cluster by để bán một cột. Trong trường hợp bạn chưa làm điều đó, bạn có thể thấy số lượng tệp đã được tạo trong thư mục bảng của bạn không bằng số lượng nhóm. Thay vào đó, bạn cũng có thể đặt số lượng bộ giảm bằng số lượng nhóm bằng cách sử dụng set mapred.reduce.task = num_bucket.

cách cài đặt php trên windows

Tại sao chúng ta cần xô?

Có hai lý do chính để thực hiện bán vé vào một phân vùng:

  • ĐẾN bản đồ tham gia yêu cầu dữ liệu thuộc về một khóa tham gia duy nhất phải có trong cùng một phân vùng. Nhưng còn những trường hợp khóa phân vùng của bạn khác với tham gia thì sao? Do đó, trong những trường hợp này, bạn có thể thực hiện phép nối phía bản đồ bằng cách bán vé cho bảng bằng cách sử dụng khóa tham gia.
  • Bucketing làm cho quá trình lấy mẫu hiệu quả hơn và do đó, cho phép chúng tôi giảm thời gian truy vấn.

Tôi muốn kết thúc blog hướng dẫn Hive này tại đây. Tôi khá chắc chắn sau khi xem qua blog hướng dẫn Hive này, bạn sẽ nhận ra sự đơn giản của Apache Hive. Kể từ đó, các bạn đã học được tất cả các nguyên tắc cơ bản của Hive, đã đến lúc cần có kinh nghiệm thực hành với Apache Hive. Vì vậy, hãy xem blog tiếp theo trong loạt blog Hướng dẫn về Hive này, về cài đặt Hive và bắt đầu làm việc trên Apache Hive.

Bây giờ bạn đã hiểu Apache Hive và các tính năng của nó, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo Chứng chỉ Edureka Big Data Hadoop giúp người học trở thành chuyên gia trong lĩnh vực HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume và Sqoop bằng các trường hợp sử dụng thời gian thực trên miền Bán lẻ, Truyền thông xã hội, Hàng không, Du lịch, Tài chính.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.