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']]