Apache Spark DataFrame İçinden Değerlere Ulaşmak

Merhabalar. Bu yazımızda Apache Spark Dataframe içindeki tekil bir değeri basit veri türünde (Int, Double vb.) nasıl elde edeceğimizi bir örnek ile göreceğiz. Benim yaptığım çalışma esnasında kullandığım ortam bilgileri:

İşletim sistemi: Windows 10 64 bit Pro

IDE: Intellij IDEA Community Edition

Spark 2.3.1

Dil: Scala

Kütüphaneler

import org.apache.spark.sql.SparkSession
import org.apache.log4j.{Logger, Level}

Log Seviyesini ERROR yapalım ki log bilgileri arasında sonuçları kaçırmayalım

Logger.getLogger("org").setLevel(Level.ERROR)

Spark Session ve SparkContext oluşturalım:

val spark = SparkSession.builder()
      .appName("DataframeOlusturma")
      .master("local[4]")
      .config("spark.driver.memory","2g")
      .config("spark.executor.memory","4g")
      .getOrCreate()

    val sc = spark.sparkContext

    import spark.implicits._

Şimdi isimler ve yaşlardan oluşan basit bir dataframe oluşturalım:

val yaslarDF = Seq(
     (8, "Ali"),
     (64, "Mehmet"),
     (27, "Cemal")
   ).toDF("yas", "isim")

Mehmet’in yaşına erişelim:

val yasMehmet = yaslarDF
.where($"isim" === "Mehmet")
.head().getInt(0)

println(s"Mehmet'in yaşı: ${yasMehmet}")

Çıktı aşağıdaki gibi olacaktır:

Mehmet'in yaşı: 64

Yapılan işi özetleyelim: Öncelikle elde edeceğimiz değeri nokta haline getirmeliyiz. Bunu iki aşamada yapıyoruz; önce tek satıra indirgiyoruz .where($"isim" === "Mehmet") daha sonra tek satırda nokta olarak sütunu seçiyoruz .head().getInt(0) . Burada head() kullanmamızın sebebi driver makineye dönen sonuçlardan seçim yapabilmek içindir.

Hoşçakalın…

 

Yazar Hakkında
Toplam 179 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara