Kovan Sorguları: Sırala, Gruplama Ölçütü, Dağıtma Ölçütü, Örneklere Göre Kümeleme

İçindekiler:

Anonim

Hive, Hadoop dosya sisteminin üstünde ETL amacı için SQL türü sorgulama dili sağlar.

Hive Query dili (HiveQL), tablolar, veritabanları ve sorgularla çalışmak için Hive'da SQL türü ortam sağlar.

Farklı türde veri işleme ve sorgulama yapmak için Hive ile ilişkili farklı türde Cümlelerimiz olabilir. Ortam dışındaki farklı düğümlerle daha iyi bağlantı için. HIVE, JDBC bağlantısı da sağlar.

Kovan sorguları aşağıdaki özellikleri sağlar:

  • Veritabanlarının, tabloların vb. Oluşturulması gibi veri modelleme
  • Çıkarma, Dönüştürme ve Verileri tablolara yükleme gibi ETL işlevleri
  • Farklı veri tablolarını birleştirmek için birleşir
  • Kod kolaylığı için kullanıcıya özel özel komut dosyaları
  • Hadoop'un üstünde daha hızlı sorgulama aracı

Bu yazıda öğreneceksiniz-

  • Sorguya göre sırala
  • Sorguya göre gruplandır
  • Göre sırala
  • Kümeleme Ölçütü
  • Dağıtıcı

Kovanda Tablo Oluşturma

Bu öğretici için ana konumuza başlamadan önce, aşağıdaki eğitici için referans olarak kullanmak üzere bir tablo oluşturacağız.

Bu eğitimde, 6 sütunlu "staff_guru" tablosu oluşturacağız.

Yukarıdaki ekran görüntüsünden,

  1. Organizasyon "guru" da bulunan çalışanlara ait Kimlik, İsim, Yaş, Adres, Maaş, Departman gibi 6 sütun değeriyle "staff_guru" tablosu oluşturuyoruz.
  2. İşte bu adımda, verileri staff_guru tablosuna yüklüyoruz. Yükleyeceğimiz veriler Employees.txt dosyası altına yerleştirilecektir.

Sorguya göre sırala:

HiveQL'deki ORDER BY sözdizimi, SQL dilindeki ORDER BY sözdizimine benzer.

Sıralama ölçütü, verileri sıralamaya yardımcı olan Hive sorgularında "SELECT" ifadesiyle kullandığımız cümledir. Yan tümce göre sıralama, Sıralama ölçütü ile belirtilen belirli sütun değerlerini sıralamak için Hive tablolarındaki sütunları kullanın. Sütun adı ne olursa olsun, sırayı cümleye göre tanımlıyoruz, sorgu sonuçları seçer ve belirli sütun değerlerini artan veya azalan sırayla görüntüler.

Alana göre belirtilen sıralama bir dizeyse, sonucu sözlüksel sırayla görüntüler. Arka uçta, tek bir redüktöre aktarılması gerekir.

Yukarıdaki ekran görüntüsünden aşağıdakileri gözlemleyebiliriz

  1. "Employee_guru" tablosunda, ORDER BY yan tümcesi ile ORDER BY sütun adı tanımlandığı gibi çalışan sorgudur.

    "Bölüm" Dize'dir, bu nedenle sonuçları sözlüksel sıraya göre görüntüler.

  2. Bu, sorgu için gerçek çıktıdır. Düzgün gözlemlersek, orderQuery'nin gerçekleştirilmesi için ADMIN, Finance vb. Gibi Departman sütunlarına göre görüntülenen sonuçları aldığını görebiliriz.

Sorgu :

SELECT * FROM employees_guru ORDER BY Department;

Sorguya göre grupla:

Grupla belirtilen belirli sütun değerlerini gruplamak için Hive tablolarındaki sütunları kullan. Sütun adı ne olursa olsun, bir "groupby" cümlesini tanımlıyor olursak olalım, sorgu belirli sütun değerlerini gruplayarak sonuçları seçecek ve görüntüleyecektir.

Örneğin, aşağıdaki ekran görüntüsünde, her departmanda bulunan toplam çalışan sayısını gösterecektir. Burada "Departman" değerine göre Grup olarak var.

Yukarıdaki ekran görüntüsünden aşağıdakileri gözlemleyeceğiz

  1. GROUP BY sütun adı olarak tanımlanan Department BY yan tümcesi ile "staff_guru" tablosunda yapılan sorgudur.
  2. Burada gösterilen çıktı, departman adıdır ve çalışanlar farklı departmanlarda sayılır. Burada tüm çalışanlar belirli bir departmana göre gruplandırılır ve sonuçlarda görüntülenir. Sonuç, her departmanda bulunan toplam çalışan sayısıyla birlikte departman adıdır.

Sorgu:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Göre sırala:

Sırala yan tümcesi, çıktıyı sıralamak için Hive tablolarının sütun adlarında gerçekleştirilir. Sıralamayı azalan düzende sıralamak için DESC'den bahsedebilir ve sıralamanın Artan düzeni için ASC'den bahsedebiliriz.

Bu şekilde, redüktöre beslemeden önce sıraları sıralayacaktır. Her zaman sıralama ölçütü sütun türlerine bağlıdır.

Örneğin, sütun türleri sayısal ise, sütun türleri dizeli ise sayısal sıraya göre sıralanacaktır, sözlüğe göre sıralanacaktır.

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. SORT BY sütun adını tanımlayan "id" ile SORT BY yan tümcesi ile "staff_guru" tablosunda performans gösteren sorgudur. DESC anahtar kelimesini kullandık.
  2. Böylece görüntülenen çıktı azalan "id" sırasıyla olacaktır.

Sorgu:

SELECT * from employees_guru SORT BY Id DESC;

Kümeleme Ölçütü:

Cluster By, Hive-QL'de hem Distribute BY hem de Sort BY yan tümceleri için bir alternatif olarak kullanılır.

Hive'da bulunan tablolarda kullanılan Cluster BY yan tümcesi. Hive, satırları redüktörler arasında dağıtmak için Cluster'daki sütunları kullanır. Cluster BY sütunları birden çok redüktöre gidecektir.

  • Çoklu redüktörlerde bulunan değerlerin sıralanmasını sağlar

Örneğin, çalışanlar_guru tablosunun Id sütun adında belirtilen Cluster By yan tümcesi. Bu sorguyu yürütürken elde edilen çıktı, arka uçtaki birden çok azaltıcıya sonuç verecektir. Ancak ön uç olarak, hem Sıralama Ölçütü hem de Dağıtım Ölçütü için alternatif bir cümledir.

Bu aslında harita azaltma çerçevesi açısından sıralama, gruplama ve kümeleme ile bir sorgu gerçekleştirdiğimizde arka uç işlemidir. Dolayısıyla, sonuçları birden çok azaltıcıda saklamak istiyorsak, Cluster By ile gideriz.

Yukarıdaki ekran görüntüsünden şu gözlemleri alıyoruz:

  1. Id alan değeri üzerinde CLUSTER BY yan tümcesini gerçekleştiren sorgudur. Burada Id değerlerine göre bir sıralama elde edecek.
  2. Guru_employees sıralamasında bulunan Id ve İsimleri şu ölçüte göre sıralı olarak görüntüler:

Sorgu:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Dağıtıcı:

Hive'da bulunan tablolarda kullanılan Distribute BY yan tümcesi. Hive, satırları redüktörler arasında dağıtmak için Distribute by'daki sütunları kullanır. Tüm Distribute BY sütunları aynı redüktöre gidecektir.

  • N redüktörün her birinin üst üste binmeyen sütun aralıkları almasını sağlar
  • Her bir redüktörün çıktısını sıralamaz

Yukarıdaki ekran görüntüsünden aşağıdakileri gözlemleyebiliriz

  1. "Empoloyees_guru" tablosunun kimliğinde performans gösteren maddeye göre dağıtım
  2. Id, Name gösteren çıktı. Arka uçta aynı redüktöre gidecek

Sorgu:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;