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…