2012-01-15 29 views
6

Tôi mới đến hive và tôi đã gặp phải một vấn đề,Làm thế nào để tạo các công việc mapreduce hive chạy đồng thời?

Tôi có một bảng trong tổ ong như thế này:

create table td(id int, time string, ip string, v1 bigint, v2 int, v3 int, 
v4 int, v5 bigint, v6 int) PARTITIONED BY(dt STRING) 
ROW FORMAT DELIMITED FIELDS 
TERMINATED BY ',' lines TERMINATED BY '\n' ; 

Và tôi chạy một sql như:

from td 
INSERT OVERWRITE DIRECTORY '/tmp/total.out' select count(v1) 
INSERT OVERWRITE DIRECTORY '/tmp/totaldistinct.out' select count(distinct v1) 
INSERT OVERWRITE DIRECTORY '/tmp/distinctuin.out' select distinct v1 

INSERT OVERWRITE DIRECTORY '/tmp/v4.out' select v4 , count(v1), count(distinct v1) group by v4 
INSERT OVERWRITE DIRECTORY '/tmp/v3v4.out' select v3, v4 , count(v1), count(distinct v1) group by v3, v4 

INSERT OVERWRITE DIRECTORY '/tmp/v426.out' select count(v1), count(distinct v1) where v4=2 or v4=6 
INSERT OVERWRITE DIRECTORY '/tmp/v3v426.out' select v3, count(v1), count(distinct v1) where v4=2 or v4=6 group by v3 

INSERT OVERWRITE DIRECTORY '/tmp/v415.out' select count(v1), count(distinct v1) where v4=1 or v4=5 
INSERT OVERWRITE DIRECTORY '/tmp/v3v415.out' select v3, count(v1), count(distinct v1) where v4=1 or v4=5 group by v3 

nó công trình, và kết quả đầu ra là những gì tôi muốn.

nhưng có một vấn đề, hive tạo ra 9 công việc tạo bản đồ và chạy từng công việc một.

tôi chạy giải thích về truy vấn này, và tôi đã nhận được thông báo sau:

STAGE DEPENDENCIES: 
    Stage-9 is a root stage 
    Stage-0 depends on stages: Stage-9 
    Stage-10 depends on stages: Stage-9 
    Stage-1 depends on stages: Stage-10 
    Stage-11 depends on stages: Stage-9 
    Stage-2 depends on stages: Stage-11 
    Stage-12 depends on stages: Stage-9 
    Stage-3 depends on stages: Stage-12 
    Stage-13 depends on stages: Stage-9 
    Stage-4 depends on stages: Stage-13 
    Stage-14 depends on stages: Stage-9 
    Stage-5 depends on stages: Stage-14 
    Stage-15 depends on stages: Stage-9 
    Stage-6 depends on stages: Stage-15 
    Stage-16 depends on stages: Stage-9 
    Stage-7 depends on stages: Stage-16 
    Stage-17 depends on stages: Stage-9 
    Stage-8 depends on stages: Stage-17 

có vẻ như giai đoạn 9-17 tương ứng với MapReduce việc 0-8
nhưng từ tin nhắn giải thích ở trên, giai đoạn 10-17 chỉ phụ thuộc vào giai đoạn 9,
vì vậy tôi có một câu hỏi, tại sao công việc 1-8 không thể chạy đồng thời?

Hoặc làm cách nào để công việc 1-8 chạy đồng thời?

Cảm ơn bạn rất nhiều vì đã giúp đỡ!

Trả lời

5

Trong tệp hive-default.xml, có một thuộc tính có tên "hive.exec.parallel" có thể cho phép thực hiện lệnh in song song. Giá trị mặc định là "false". Bạn có thể thay đổi nó thành "true" để có được khả năng này. Bạn có thể sử dụng thuộc tính khác "hive.exec.parallel.thread.number" để kiểm soát số lượng công việc nhiều nhất có thể được thực hiện song song.

Để biết thêm chi tiết: https://issues.apache.org/jira/browse/HIVE-549

+0

hoạt động này! Cảm ơn nhiều! – SSolid

+0

@kai zhang Tôi hiểu rằng khi "hive.exec.parallel" được đặt thành true, các tác vụ độc lập sẽ chạy song song. Bạn có thể nghĩ về bất kỳ trường hợp sử dụng nào khi đặt nó thành false không? –

+0

@MayankJaiswal Dựa trên kiến ​​thức của tôi, "hive.exec.parallel" được đề xuất là "sai" trong phiên bản rất sớm (ví dụ: 0,7). Tôi nghĩ lý do duy nhất là tính năng này không ổn định vào thời điểm đó. –

Các vấn đề liên quan