PySpark ile Spark Dataframe İşlemleri-1

Bu yazımızda Spark’ın Dataframe’inden bahsedeceğim. Spark Dataframe (nedense Spark Tablosu diyesim var 🙂 )  yapısını ilişkisel veri tabanlarındaki tablolara benzetebiliriz; satırlar, sütunlar ve şema. Spark Dataframe; Python, R, Pandas vb. dillerdeki dataframe benzese de en büyük farkı dağıtık işlemeye uygun olmasıdır. Spark Tablosunu; ilişkisel veri tabanı tabloları, Hive tabloları, Spark RDD ler gibi birçok farklı kaynaktan oluşturabiliriz.

Spark Tablosunun bazı avantajları şunlardır: Python, R, Scala, Java gibi API desteği bulunmaktadır. Bir sütun altında tek bir veri tipi bulunduğundan Spark bu tablodan şemayı daha rahat anlar ve işlemlerini daha iyi optimize eder. Çok büyük hacimlerdeki (petabayt) yapısal ve yarı-yapısal verileri işlemeye müsaittir.

RDD’den Spark Tablosu oluşturma:

from pyspark.sql import Row 
liste = [('Cemal',35,'İşçi','Ankara'),('Ceyda',42,'Memur','Kayseri'),('Timur',30,'İşsiz','İstanbul'),'Burcu',29,'Pazarlamacı','Ankara')] 
rdd = sc.parallelize(liste) 
insanlar = rdd.map(lambda x: Row(isim=x[0], yas=int(x[1]), meslek=x[2], ikamet=x[3])) 
insanlarDF = sqlContext.createDataFrame(insanlar)

Hive Tablosundan:

from pyspark.sql import Row
veriSetimSparkDF = sqlContext.sql("select * from veritabanim.tablom")

Yukarıdaki sorgu Hive’de veritabanim isimli veritabanında tablom ismindeki tüm kayıtları alarak veriSetimSparkDF isimli dataframe değişkenine atar. type(veriSetimSparkDF) komutuyla pyspark.sql.dataframe.DataFrame sonucunu alırız.

Dataframe ile biraz oynayalım:

Şema yazdır:

insanlarDF.printSchema()
root
 |-- ikamet: string (nullable = true)
 |-- isim: string (nullable = true)
 |-- meslek: string (nullable = true)
 |-- yas: long (nullable = true)

İlk satırı yazdıralım:

insanlarDF.first()
Row(ikamet=u'Ankara', isim=u'Cemal', meslek=u'isci', yas=35)

İlk iki satırı gösterelim:

insanlarDF.show(2)
+-------+-----+------+---+
| ikamet| isim|meslek|yas|
+-------+-----+------+---+
| Ankara|Cemal|  isci| 35|
|Kayseri|Ceyda| Memur| 42|
+-------+-----+------+---+
only showing top 2 rows

Satırları sayalım:

insanlarDF.count()
4

İstatistiksel özet alalım:

insanlarDF.describe().show()
+-------+----------------+
|summary|             yas|
+-------+----------------+
|  count|               4|
|   mean|            34.0|
| stddev|5.94418483337567|
|    min|              29|
|    max|              42|
+-------+----------------+

Yukarıda görüldüğü üzere sadece yaş değişkeni ile ilgili bilgi alabildik. Bunun sebebi sadece yaş değişkeninin nümerik olmasıdır. Çünkü aritmetik ortalama, standart sapma vb.  işlemler sadece rakamlarla yapılır. Şimdi aynı işlemi kategorik özelliklerden birine yapalım bakalım sonuç ne olacak:

insanlarDF.describe('meslek').show()
+-------+-------+
|summary| meslek|
+-------+-------+
|  count|      4|
|   mean|   null|
| stddev|   null|
|    min|  Memur|
|    max|  İşsiz|
+-------+-------+

Görüldüğü gibi ortalama ve standart sapma null oldu. min ve max ise muhtemelen rastgele kategorik bir değer aldı. Yani sonuçlar tamamen anlamsız.

Şimdi sütunları nasıl seçeriz ona bir bakalım:

insanlarDF.select('isim','yas','meslek').show()
+-----+---+-----------+
| isim|yas|     meslek|
+-----+---+-----------+
|Cemal| 35|       isci|
|Ceyda| 42|      Memur|
|Timur| 30|      İşsiz|
|Burcu| 29|Pazarlamaci|
+-----+---+-----------+

Şimdi kaç tane farklı şehir var onu saydıralım. Burada SQL bilgimiz bize hemen distinct ve count sözcüklerini hatırlatacaktır.

insanlarDF.select('ikamet').distinct().count()
3

Şimdi kesiyorum. Müteakip yazılarımda dataframe ile biraz daha oynayacağız. Veriyle kalın…

PySpark ile Spark Dataframe İşlemleri-1” için 2 yorum

  • 6 Ağustos 2017 tarihinde, saat 14:03
    Permalink

    Güzel bir Türkçe kaynak olmuş, elinize sağlık

    Yanıtla
    • 6 Ağustos 2017 tarihinde, saat 19:16
      Permalink

      Çok teşekkürler Tuğba Hanım. Tekrar bekleriz 🙂

      Yanıtla

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Barkod Etiketi üretimi yapan firmaların işi ciddi bir iştir. Bu anlamda sizin de hangi firmayla çalışma yatığınız çok büyük önem taşır. Kullanım alanı sınırsızdır. Her alanda ve her sektörde bu etiketlere ihtiyaç duyulur. Etiket çeşitleri ve Barkod etiketleri, seri üretimle hazırlanmaktadır. Etiketler ahşap, plastik, metal ya da cam gibi ambalajlı ürünlerin üzerilerine ugulanır.
Mide botoksu midenin belirli yerlerine botoks maddesi enjekte etme suretiyle midedeki kasların çalışmasını sınırlandırmayı ve sayede midenin gıdaları sindirim sürecini yavaşlatarak buna bağlı olan açlık-tokluk hissi süresinin de uzatılmasını amaçlayan ameliyatsız kolay kilo verme tedavisidir. Botoks uygulanırken, midenin detaylı şekilde içerden görüntülenmesini sağlayan endoskopi uygulaması ile gerçekleştirilir. Bu sayede hastaya sadece gastroskpik uygulaması kadar bir rahatsızlık olur. Özellikle diyet programlarına ve düzenli egzersizlere uymakta zorlanan ve buna bağlı olarak da obeziteye yakalanan, bu yüzdende obezitenin sebep olduğu çeşitli sağlık sorunları olan kişiler için mide botoksu bir devrim niteliğindedir ve son yıllarda ülkemizde yaygın olarak kullanılmaktadır.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
Termal Etiket Eco Termal etiket, yüzeyinde hami bir katman bulunmayan miktar çeşididir. Kumbara üzerine termal lamine edilmesi sonucunda oluşmaktadır. Kullanılan barkod yazıcının baş bölgesindeki ısı beraberlik birlikte termal sıvılaşma özelliği gösterir dahi bu şekilde Eco termal etiketin üzerine baskı alınır. Bu termal etiketlere yumruk termal olarak (ısıyla) yapılır ve yerde yüzden ribon kullanılmaz. Ribon kullanımı olmadığı için tahakküm maliyeti sıfıra yakındır.
Dijital Baskı ve baskı etiketi teknolojileri geliştikçe firmaların büyük ebatlı etiket ihtiyaçlarına da dijital çözümler sunulmaya başlamıştır. Böylece, birbirinden canlı renklerin ve kusursuz çizgilerin hakimiyetindeki büyük ebatlı dijital baskı etkileri; kurumsal firmaların reklam kampanyalarındaki en iddialı unsurlarına dönüşmüştür.