
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…