Impala Bölüm 5: Sorted Table

Cloudera Impala

Impala’ya has yapılardan biridir. Tablo Create ederken SORT BY ifadesi ile verilerin Insert veya CTAS kullanımı ile yüklenmesi esnasında sırlama işlemini gerçekleştirir.

Sıralanmış data file oluşturmak, en çok Parquet tabloları için uygundur. Çünkü  her dosyanın içinde depolanan meta data’ların dosyadaki her sütun için minimum ve maksimum değerleri içerir. (İstatistikler dosyadaki her satır grubu için geçerlidir; basitlik açısından Impala her dosyaya tek bir satır grubu yazar.)

Verileri her bir data file içinde nispeten dar aralıklarda birlikte gruplamak, Impala’nın bir sorgunun WHERE filtreleme ifadesinde belirtilen koşullara uymayan data file’ları hızlı bir şekilde atlamasını mümkün kılar ve Parquet encoding ve sıkıştırmanın etkinliğini artırabilir.

Bu madde Kudu tabloları veya HBase tabloları için geçerli değildir. Parquet’in dışına diğer HDFS dosya biçimleri için uygulanabiliyor olmasına rağmen, Parquet tablolarında daha verimlidir, çünkü her Parquet data file, o file’daki veriler hakkında istatistikler içerir.

SORT BY sütunları, partition’lanmış bir tablonun partition key’lerini içermez, zira partition’ın HDFS üzerinde bir dizin olduğunu biliyoruz, Bu yüzden genelde tablo verilerinde tutulmaz.

Impala SORT BY ifadesi ile oluşturulan data file’ların sıralamasını garanti etmez ve buna güvenmez, çünkü kullanılacak bir ETL tool bunu desteklemiyor olabilir veya LOAD DATA şeklinde yüklenmesi durumunda sıralama işlemi gerçekleştirilmez, ancak INSERT veya CTAS kullanarak yapılan veri yüklemeleri için bu durum garanti edilmektedir.

Yine özellikle altını çizelim, tablo create ederken SORT BY kısmında belirtilen sütunları WHERE ifadesinden kullanmayacaksanız çok anlamsız bir tanımlama yapmış olacaksınız, çünkü sıralı olması temelde hiçbir işinize yaramamış olacak.

Örnek kullanımı:

CTAS örneği:

Not: SORT BY kullandığımızda tüm meta data tablonun TBLPROPERTIES alanında depolanır. Hive ve Spark SQL gibi engine’ler impala tabloları ile çalışabiliyor olmalarına rağmen bu özelliği tanımaz ve kullanamazlar.