HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Hadoop InputFormat &Các loại InputFormat trong MapReduce

Trong hướng dẫn Hadoop trước đây của chúng tôi , chúng tôi đã cung cấp cho bạn mô tả chi tiết về Hadoop Mapper Hộp giảm tốc. Bây giờ trong blog này, chúng ta sẽ đề cập đến thành phần khác của quy trình MapReduce, tức là Hadoop InputFormat.

Chúng ta sẽ thảo luận về InputFormat trong Hadoop là gì, những chức năng nào được cung cấp bởi MapReduce InputFormat. Chúng tôi cũng sẽ đề cập đến các loại InputFormat trong MapReduce và cách lấy dữ liệu từ người lập bản đồ bằng InputFormat.

Hadoop InputFormat là gì?

Định dạng đầu vào Hadoop mô tả đặc tả đầu vào để thực hiện công việc Map-Reduce.

InputFormat mô tả cách tách và đọc các tệp đầu vào. Trong thực thi công việc MapReduce, InputFormat là bước đầu tiên. Nó cũng chịu trách nhiệm tạo các phân tách đầu vào và chia chúng thành các bản ghi.

Các tệp đầu vào lưu trữ dữ liệu cho công việc MapReduce. Các tệp đầu vào nằm trong HDFS . Mặc dù định dạng tệp này là tùy ý, chúng tôi cũng có thể sử dụng tệp nhật ký dựa trên dòng và định dạng nhị phân. Do đó, trong MapReduce, lớp InputFormat là một trong những lớp cơ bản cung cấp chức năng bên dưới:

  • InputFormat chọn tệp hoặc các đối tượng khác để nhập.
  • Nó cũng xác định các phân tách Dữ liệu. Nó xác định cả kích thước của các nhiệm vụ Bản đồ riêng lẻ và máy chủ thực thi tiềm năng của nó.
  • Hadoop InputFormat xác định RecordReader. Nó cũng chịu trách nhiệm đọc các bản ghi thực tế từ các tệp đầu vào.

Làm cách nào để chúng tôi lấy dữ liệu từ Mapper?

Các phương pháp để lấy dữ liệu từ trình liên kết là: getsplits () createRecordReader () như sau:

public abstract class InputFormat<K, V>
{
public abstract List<InputSplit> getSplits(JobContext context)
throws IOException, InterruptedException;
public abstract RecordReader<K, V>
createRecordReader(InputSplit split,
TaskAttemptContext context) throws IOException,
InterruptedException;
}

Các loại InputFormat trong MapReduce

Có nhiều loại MapReduce InputFormat trong Hadoop được sử dụng cho các mục đích khác nhau. Hãy thảo luận về các loại Hadoop InputFormat bên dưới:

1. FileInputFormat

Nó là lớp cơ sở cho tất cả các InputFormats dựa trên tệp. FileInputFormat cũng chỉ định thư mục đầu vào có vị trí tệp dữ liệu. Khi chúng tôi bắt đầu thực thi công việc MapReduce, FileInputFormat cung cấp một đường dẫn chứa các tệp để đọc.

InpuFormat này sẽ đọc tất cả các tệp. Sau đó, nó chia các tệp này thành một hoặc nhiều InputSplits.

2. TextInputFormat

Nó là InputFormat mặc định. InputFormat này xử lý mỗi dòng của mỗi tệp đầu vào như một bản ghi riêng biệt. Nó thực hiện không phân tích cú pháp. TextInputFormat hữu ích cho dữ liệu chưa được định dạng hoặc bản ghi dựa trên dòng như tệp nhật ký. Do đó,

  • Chìa khóa - Nó là độ lệch byte của đầu dòng trong tệp (không phải toàn bộ tệp một lần tách). Vì vậy, nó sẽ là duy nhất nếu được kết hợp với tên tệp.
  • Giá trị - Nó là nội dung của dòng. Nó không bao gồm các đầu cuối dòng.

3. KeyValueTextInputFormat

Nó tương tự như TextInputFormat. InputFormat này cũng coi mỗi dòng đầu vào là một bản ghi riêng biệt. Mặc dù sự khác biệt là TextInputFormat coi toàn bộ dòng là giá trị, nhưng KeyValueTextInputFormat tự ngắt dòng thành khóa và giá trị bằng một ký tự tab (‘/ t’). Do đó,

  • Chìa khóa - Mọi thứ cho đến ký tự tab.
  • Giá trị - Đây là phần còn lại của dòng sau ký tự tab.

4. SequenceFileInputFormat

Nó là một InputFormat để đọc các tệp trình tự. Tệp trình tự là tệp nhị phân. Các tệp này cũng lưu trữ chuỗi các cặp khóa-giá trị nhị phân. Chúng được nén theo khối và cung cấp tuần tự hóa trực tiếp và giải mã hóa một số dữ liệu tùy ý. Do đó,

Khóa &Giá trị đều do người dùng xác định.

5. SequenceFileAsTextInputFormat

Nó là biến thể của SequenceFileInputFormat. Định dạng này chuyển đổi các giá trị khóa của tệp trình tự thành các đối tượng Văn bản. Vì vậy, nó thực hiện chuyển đổi bằng cách gọi ‘ tostring () 'Trên các khóa và giá trị. Do đó, SequenceFileAsTextInputFormat làm cho các tệp trình tự trở thành đầu vào phù hợp để phát trực tuyến.

6. SequenceFileAsBinaryInputFormat

Bằng cách sử dụng SequenceFileInputFormat, chúng tôi có thể trích xuất các khóa và giá trị của tệp trình tự dưới dạng một đối tượng nhị phân không trong suốt.

7. NlineInputFormat

Nó là một dạng khác của TextInputFormat trong đó các khóa là độ lệch byte của dòng. Và các giá trị là nội dung của dòng. Vì vậy, mỗi trình ánh xạ nhận được một số lượng dòng đầu vào khác nhau với TextInputFormat và KeyValueTextInputFormat.

Số lượng phụ thuộc vào kích thước của sự phân chia. Ngoài ra, phụ thuộc vào độ dài của các dòng. Vì vậy, nếu muốn trình ánh xạ của chúng tôi nhận được một số lượng dòng đầu vào cố định, thì chúng tôi sử dụng NLineInputFormat.

N- Là số dòng đầu vào mà mỗi người lập bản đồ nhận được.

Theo mặc định (N =1), mỗi trình ánh xạ nhận được chính xác một dòng đầu vào.

Giả sử N =2, thì mỗi lần chia gồm hai dòng. Vì vậy, một người lập bản đồ nhận được hai cặp Khóa-Giá trị đầu tiên. Một trình liên kết khác nhận được hai cặp khóa-giá trị thứ hai.

8. DBInputFormat

InputFormat này đọc dữ liệu từ cơ sở dữ liệu quan hệ, sử dụng JDBC. Nó cũng tải các tập dữ liệu nhỏ, có lẽ để kết hợp với các tập dữ liệu lớn từ HDFS bằng cách sử dụng MultipleInputs. Do đó,

  • Chìa khóa - LongWritables
  • Giá trị - DBWritables.

Kết luận

Do đó, InputFormat xác định cách đọc dữ liệu từ một tệp vào các phiên bản Mapper. Trong hướng dẫn này, chúng ta đã tìm hiểu nhiều loại InputFormat như FileInputFormat, TextInputFormat, v.v.

Định dạng đầu vào mặc định là TextInputFormat. Nếu bạn có bất kỳ câu hỏi nào liên quan đến MapReduce InputFormat, vui lòng chia sẻ với chúng tôi. Hy vọng chúng tôi sẽ giải quyết chúng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 6 tính năng hàng đầu của HDFS - Hướng dẫn sử dụng Hadoop HDFS

  2. Cơ sở dữ liệu hoạt động trong CDP

  3. Bảo mật cơ sở dữ liệu hoạt động - Phần 1

  4. Các vùng HBase hợp nhất

  5. Cách thực hiện:Sử dụng Giao diện Apache HBase REST, Phần 1