Skip to main content

SparkR'ın Kullanımı ve Önemli Metotları

SparkR, Spark'ın R'da çalışabilmesi için kullanılan bir kütüphanedir. R'da SparkR'ın nasıl kurulduğunu buraya tıklayarak detaylı olarak öğrenebilirsiniz.

SparkR kütüphanesini R'da çağırmak için aşağıdaki komut kullanılır.

library(SparkR)

Bir SQL komutunu çalıştırmak için "SparkR::sql( SQL cümlesi )" metodu kullanılır. Aşağıda bir örnek veriyorum.

sonuc = SparkR::sql("SELECT * FROM musteriler")

Koşul Kontrolü (IF - ELSE)

SparkR'da "IF - ELSE" koşulu ise "SparkR::ifelse( koşul, koşul doğruysa yapılacaklar, koşul yanlışsa yapılacaklar )" metodu kullanılarak yapılır. Örneğin, "x" değişkeninin değeri 10'dan büyük veya 10'a eşit ise "y" değişkeninin değeri 5 olacaksa; "x" değişkeninin değeri 10'dan küçük ise "y" değişkenin değeri 2 olacaksa bu işlem aşağıdaki şekilde yapılır.

y = SparkR::ifelse(x >= 10, 5, 2)

Tablo İşlemleri

Veri Tablosunu Görüntüleme (HEAD ve TAIL)

Bir veri tablosunun ilk "n" satırını görüntülemek için "SparkR::head( tablo adı, n )" ve son "m" satırını görüntülemek için ise "SparkR::tail( tablo adı, m )" komutları kullanılır. Buradaki "n" ve "m" değerleri isteğe bağlı olup, istenirse önündeki virgül ile birlikte yazılmayabilir. Örnekler:

SparkR::head( musteriler, 10)
SparkR::head( musteriler)
SparkR::tail( musteriler, 10)
SparkR::tail( musteriler)

Tablonun Belirli Sütunlarını Seçmek (SELECT)

Bir veri tablosunun sadece belirli sütunlarını seçmek için "SparkR::select( tablo adı, c("sütun adı-1", "sütun adı-2", "..."))" komutu kullanılır. Örneğin "musteriler" tablosunun sadece "musteri_adi" ve "eposta_adresi" sütunlarını seçelim.

epostalar = SparkR::select(musteriler, c("musteri_adi", "eposta_adresi"))

Tablonun Belirli Sütunlarını Silmek (DROP)

Veri tablosunun sadece belirli sütunlarını silmek (yani tablodan çıkarmak) için "SparkR::drop( tablo adı, c("sütun adı-1", "sütun adı-2", "..."))" komutu kullanılır. Örneğin "musteriler" tablosunun "adres" ve "telefon_no" sütunlarını tablodan çıkartalım.

yeni_tablo = SparkR::drop(musteriler, c("adresi", "telefon_no"))

Veri Tablosunu Filtreleme (FILTER)

Bir veri tablosunun belirli bir sütununun belirli değerleri alması durumunu (yani filtrelemeyi) "SparkR::filter( tablo adı, uygulanacak kriter(ler) )" komutuyla yapabiliriz. Örneğin nüfusu bir milyon ve üzeri olan şehirleri aşağıdaki şekilde seçebiliriz.

sonuc = SparkR::filter(sehirler, nufus > 1000000)

(COLLECT)

"SparkR::filter( tablo adı)" komutuyla yapabiliriz.

sonuc = data.table::data.table(SparkR::collect(sehirler))

İki Tabloyu Birleştirmek (MERGE)

İki farklı veri tablosunu birleştirmek için "SparkR::merge( birinci tablo adı, ikinci tablo adı, by.x = "birinci tablonun sütun adı", by.y = "ikinci tablonun sütun adı", all.x = TRUE )" komutu kullanılır. Birinci ve ikinci tablo adları yazıldıktan sonra tablolar birleştirilirken satırların eşleşmesi için kullanılacak sütunlar sırasıyla "by.x" ve "by.y" parametrelerine yazılır. Örneğin "iller" ve "ilceler" tablolarını "iller" tablosundaki "plaka_no" ve "ilceler" tablosundaki "il_plaka_no" sütunlarını kullanarak birleştirelim.

sonuc = SparkR::merge(iller, ilceler, by.x = 'plaka_no', by.y = 'il_plaka_no', all.x = TRUE)

Tabloyu Toplulaştırmak ve Gruplamak (AGGREGATE ve GROUPBY)

Veri tablosu toplulaştırmak (yani hesaplama tablolarında olduğu gibi pivot tablosu haline getirmek) için "SparkR::agg()" ve "SparkR::groupBy()" metotları kullanılır. Örneğin "siparisler" tablosunu "musteri_no" ve "siparis_kanali" sütunlarına göre "siparis_tutari" değerlerini toplulaştırmak (toplamak) için aşağıdaki komut kullanılabilir.

toplam_tutar = SparkR::agg(SparkR::groupBy(siparisler, "musteri_no", "siparis_kanali"), toplam_siparis = sum(siparisler[['siparis_tutari']]))

Düz Yazı İşlemleri

Yazının Bir Bölümü (SUBSTRING)

Bir düz yazının sadece belirli bir kısmını almak için "SparkR::substr( yazi, başlangıç harfinin indisi, harf sayısı )" komutu kullanılır. Örneğin, "Eğitim Portalı" ifadesinin 4 ilâ 9. harflerini (yani 5 harfi) almak için aşağıdaki komut kullanılır.

sonuc = SparkR::substr("Eğitim Portalı", 4, 5)

Veri Kontrolü

Verinin Boş (NULL) veya Dolu (Not NULL) Olması

Bir tablodaki veri hücrelerinin boş olup olmadığı "SparkR::isNull( sütun adı)" komutuyla, dolu olup olmadığı ise "SparkR::isNotNull( sütun adı)" komutu kontrol edilir. Örneğin, "müşteriler" tablosunun "tel_no" sütunun boş olup olmadığı aşağıdaki şekilde kontrol edilebilir. Sonuç olarak ise "TRUE" veya "FALSE" değerleri döner.

SparkR::isNull(musteriler[['tel_no']]
SparkR::isNotNull(musteriler[['tel_no']]

musteriler[[tel_var_mi]] = SparkR::ifelse(SparkR::isNull(musteriler[['tel_no']], "Yok", "Var")

Tarih İşlemleri

Ay (MONTH) ve Yıl (YEAR) Değerlerini Almak

Tablonun tarih verisi içeren sütunundan ay değerini almak için "SparkR::month( sütun adı )" komutu, yıl değerini almak için "SparkR::year( sütun adı )" komutu kullanılır. Örneğin, "siparisler" tablosunun "siparis_tarihi" sütunun ay ve yıl değerleri aşağıdaki şekilde alınabilir.

siparis_yili = SparkR::year(siparisler[['siparis_tarihi']]
siparis_ayi = SparkR::month(siparisler[['siparis_tarihi']]