Anasayfa / Büyük Veri / Spark Dataframe&Dataset Operasyonları-2:

Spark Dataframe&Dataset Operasyonları-2:

Merhaba, bu yazımızda veri ön hazırlığı aşamasında, veri yüklerken, Spark Dataframe oluştururken, dataframe şekillendirirken, onu dönüştürürken, dataframe üzerinde veri keşfi yaparken vb. işlemler için kullandığım spark yapısal API operasyonlarından faydalı bulduklarımı paylaşacağım. Görkemli ve haşmetli makine öğrenmesi, derin öğrenme ve yapay zeka modelleri ile kedileri ve köpekleri ayırmak dururken bu tür basit işlerle niye uğraşıyorsun demeyin. Bahsedilen bu modellerin yakıtı o modelin istediği türden temiz ve kaliteli bir veridir. Şayet o modellerin deposuna kaliteli bir yakıt koyamaz isek görkemlerine gölge düşer, prestijleri sarsılır. Birçok insan veri yükleme ve veri hazırlığı esnasında sorun yaşıyor. Araştırmalara göre makine öğrenmesi projelerinde zaman ve emeğin yaklaşın 5’te 4’ü veri hazırlığına gidiyor. Ben de bizzat bunu tecrübe edenlerdenim.

Spark 2.0 sürümüyle birlikte Spark dataframe/dataset API’sine daha fazla önem vermeye başladı, ilişkisel dünyanın gücünü farketti sanırım 🙂 Sizlere de tavsiyem öncelikli olarak Spark RDD API ile değil Dataframe API ile uğraşın. Belli bir uzmanlık seviyesinden sonra RDD’ye de girersiniz.

Bu yazıda kullanacağım araçlar şunlardır:

  • Spark Sürümü: Spark 2.3.1
  • Geliştirme Ortamı: IntelliJ IDEA
  • Kaynak Yönetimi: Lokal (Windows 10 üzeri Spark)
  • Veri Depolama: Lokal disk
  • Programlama Dili: Scala 2.11.8
  • Bağımlılık Yönetimi ve Derleme: Maven

SparkSession’dan SparkContext’e Erişmek

Yukarıda bahsettiğimiz gibi Spark 2.0’dan önce spark uygulamasına geliştiriciler SparkContext ile erişiyordu. Ancak Spark 2.0 ile birlikte SparkSession geldi ve geliştiriciler artık spark uygulamasına SparkSession ile erişim sağlıyorlar. Peki biz uygulamamızda hiç RDD bazlı bir işlem yapamayacak mıyız? Hayır, yapabileceksiniz. Peki SparkContext ve sc öldümü? Hayır, ölmedi, SparkSession içinde yaşamaya devam ediyor. Eski API’dan alıştığımız ve hala sağda solda bir çok örnek uygulama, hata giderme vb. mecralarda karşılaştığımız SparkContext, HiveContext, SQLContext‘e SparkSession ile erişebiliyoruz. Aşağıda SparkSession ile basit bir RDD yaratarak bunun uygulamasını yapacağız:
Kod:

import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
      .master("local[4]")
      .getOrCreate()

val myRDD = spark.sparkContext.parallelize(Seq((1,2,3),(4,5,6)))
myRDD.foreach(println)

Sonuç:

(4,5,6)
(1,2,3)

Eğer shell kullanıyor iseniz SparkSession yaratmanıza gerek yok zaten shell SparkSession‘ı spark değişkeninde başlatmış olarak açılıyor.

Listelerden Dataset Oluşturmak

Dataframe ve Dataset’leri oluşturmak için birçok yol var. Bunlardan birisi de listelerden dataset oluşturmak. Listeyi oluştururken aynı zamanda sütun isimlerini de belirliyoruz. Ayrıca liste ile collection kavramı altına giren sequence ve array gibi veri yapılarını kasdediyorum.

Kod:

val mySeq = Seq((1,2,3,4),(5,6,7,8),(9,10,11,12),(13,14,15,16))

val ds = spark.createDataset(mySeq)
              .selectExpr("_1 as col1","_2 as col2", "_3 as col3", "_4 as col4")

ds.show()

Sonuç:

+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|   1|   2|   3|   4|
|   5|   6|   7|   8|
|   9|  10|  11|  12|
|  13|  14|  15|  16|
+----+----+----+----+

dsdsd

Hakkında Erkan ŞİRİN

2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Halihazırda İmpektra Bilişim A.Ş.'de büyük veri yöneticisi olarak çalışmakta olup aynı zamanda Gazi Üniversitesi Yönetim Bilişim Sistemleri doktora öğrencisidir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete eğitimler vermekte ve projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık tespiti, sahtecilik tespiti, veri hazırlama sürecidir.

GÖZ ATMAK İSTEYEBİLİRSİNİZ

IntelliJ IDEA ile Apache Spark Projesini Uzak YARN Cluster Üzerinde Çalıştırmak-2/2

Merhaba. Yazı serimizin ikincisine devam ediyoruz. Bir önceki ilk yazımızda konuya giriş yapmıştık. Hatırlayalım, amacımız …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir