Kayıtlar

Encoding / Decoding

Resim
Atalarin encoding'i Programlar genelde veriyi 2 sekilde kullanir: 1. In-memory : bilgisayar hafizasinda list, dictionary, ya da custom class olarak tutulut. Bu veri yapilari direk olarak CPU tarafindan erisilmek ve manipule edilbilmek uzere optimize edilmis olurlar.  2. Byte array : Datayi diske yazmak istedigimizde ya da network uzerinden transfer etmek istedigimizde, bir sekilde byte dizesi haline getirmemiz gerekir.  Iste hafizada duran verilen byte dizisi haline getirilmesi islemine encoding (marshalling ya da seializasyon da denilir) adi veilir. Byte arayindan tekrar hafiza tiplerine donustumek de decoding olarak adlandirilir. (benze sekilde Unmarshalling veya deseializasyon da denilebili). Peki hafizada tutulan verilei ne sekilde serialize edebiliriz? 1. Dil destekli encoding Mesela python icin pickle, Java icin java.io.Serializable, Ruby icin marshall formatlarinda dil tarafindan desteklenen encoding olanaklari vardir. Bir python class'ini ya da arrayini kolayca pickle&#

Play, Scala, sbt, Shading

Resim
Buyuk resmi gor yigenim. Gelin birlikte sifirdan bir scala ve sbt kullarak, multi project bir yapida Play projesi olusturalim. 1. Play  Play, JVM'de kabul gormus bir web application framework'u. Ilk baslangicta, kendi basina calisacak cok basit bir Play projesi olsutralim. IntelliJ kullaniyorum, yeni bir sbt projesi  olustuyorum. Daha sonra build.sbt uzerinde su sekilde eklemeler yapacagiz:      name := "play-standalone"      version := "0.1"      scalaVersion := "2.13.8"    lazy val root = (project in file ( "." ))      .enablePlugins( PlayScala )      .settings(      name := """cok sukseli api projesi""" ,      organization := "com.lombak" ,      version := "1.0-SNAPSHOT" ,      scalaVersion := "2.13.6" ,      libraryDependencies ++= Seq (      guice ,      "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0&qu

Programmer's Dilemma

Resim
Tamam basligi inglizce attik ama bu sadece bir gonderme * Dilemma, koken olarak nereden gelip nereye gidiyor bilemiyorum ama, sadece 2 seceneginizin olup da hangisini sececeginizi bir turlu bilemediginiz durumlarda kullaniliyor gibi geliyor bana.  Reinforcement learningde de karsimiza cikan exploration vs exploitation dilemmasi da buna bir ornek olarak gosterilebilir. Daha fazla space'i explore mu etmek gerek yoksa, var olan bir space'i sonuna kadar somurerek exploit etmek mi?  Bizim gibiler icin bu durum su sekilde karsimiza cikabilir: mevcut isyerinde kalip yukselmeye calismak mi (exploitation) yoksa baska (daha sukseli) firmalara girmeye calismak mi (exploration) ?  Hadi bunu isyeri olarak dusunup de konuyu gereginden fazla basitlestirmeyelim ama, mevcut durumunu mu korumak vs yeni arayislara mi girmek seklinde yorumlayalim. Meselea bulundugunuz ulkeded kalmak, yerlesmek, entergre olmak (exploitation) vs baska ulkelere (gorunus olarak daha sukseli) mi gitmeye calismak?  Uzun

SageMaker Notebook'a S3'ten Jar Import etmek

Emr uzerinde Jupyter notebook calistirmak cok kolay. Tek yapmamiz gereken SageMaker console'a giderek yeni bir notebook olusturmak. Buradaki tek puruz, ekstra bir Jar dosyasindan spark job import etmek ve jupyter notebook uzerinde calismak.  Yapmamiz gereken sey, Jar dosyamizi s3 uzerinde bir yere kopyalayip, daha sonra Jar'i jupyter notebook'a import etmek. %%configure -f {     "conf": {          "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3"     },     "jars": [           "//s3 jar yolu"     ] } Bu sayede yolunu verdigimiz Jar (lar) icerisinde spark job'larini notebook uzerinde claistirabilir ve cok keyifli bir development environment olusturabiliriz.  Happy hacking.

Zeppelin Notebook Scala'dan Python'a Veri Paylasimi

Cok fazla tatavaya girmeden son donemde karsialstigim bir problemle ilgili cozumumu paylasmak istiyorum. Neden Zeppelin? Oncelikle neden ve ne sekilde zeppelin kullaniyorum? Aslinda tabi ki production-grade uygulamalari zeppelin ile gelistirmiyoruz. sbt bazli baya duz IntelliJ ile gelistirdigimiz scala / spark uygulamalari var. Ancak bazi durumlar oluyor ki, bir metodu alip incelemek istiyorum. Farkli inputlar ile ne gibi sonuclar veriyor gormek istiyorum. Yani elimizdeki mevcut scala / spark projesi ile biraz oynamak istiyorum.  Bunun icin oncelikle scala projesini assemble ederek (sbt assembly plugin kullaniyorum), zeppelin'deki spark interpereter'e import ediyorum. Daha sonra zeppelin notebooklar icerisinde bu projeimin istedigim kisimlarini import ederek cagirabiliyorum.  Gorsellestirme onemli bir mevzumuzdur Ve bir noktada bu sonuclari gorsellestirmem gerekiyor. Ozellikle spatial data ile ugrasirken 2d scatter plot guzel gidiyor diyebilirim. Ancak scala tarafinda bunu cize

Data Patterns #1 - Data Summarization Pattern

Resim
Problem Verilen bir DNA dizesinde (mesela "AATGC..."), her bir bazin (A, C, G, T) kac kere gectigini bulunuz. Ornek dna dizilim dosyasi: https://ftp.ncbi.nlm.nih.gov/genomes/INFLUENZA/influenza.fna (1.3 Gb) Cozum Yani aslinda kabaca, verilen text icerisinde gecen distinct karakterleri saymamizi istiyor. Cok basit (kolay demedik) ve temel bir problem.  Ornek bir veri dosyasi icin https://ftp.ncbi.nlm.nih.gov/genomes/INFLUENZA/influenza.fna (1.3 Gb text dosyasi) Input sekline bakacak olursak: >gi|58576|gb|X52226|Influenza A virus (A/FPV/Rostock/34(H7N1)) gene for neuraminidase, genomic RNA AGCAAAAGCAGGAGTTCAAAATGAATCCAAATCAGAAAATAATAACCATTGGGTCAATCTGTATGGGGAT CGGAATAATCAGCCTAATATTACAAATTGGAAACATAATCTCAATGTGGGTTAGTCATTCAATTCAGACT GAAAATCAAAATCACCATGAAGCATGCAACCCAAGCATTGCTGGACAGGATGCAGCTTCAGTGGCACTAG CAGGCAATTCCTCTCTTTGTCCCATTAGTGGGTGGGCTATATACAGTAAAGACAATGGTATAAGAATTGG .... En basta, buyuktur isareti ile baslayan bir yorum satiri var ki bu satiri gozardi etmemiz gerekiyor. Ge

Lombak Nerede?

Resim
 Buradayim arkadaslar, bir yere gittigimiz yok (henuz).  Bu postun amaci, olmedigimi ozellikle kendime gosterebilmek ve de blog yazma konusuna tekrar isinabilmek. Simdi siteye baktim da 3 aydir yeni post gelmemis. Peki ben ne yaptim 3 ayrdir ? - AWS uzerinde daha fazla calismaya basladim. EMR'da Spark calistirmak ile alakali yazacagim seyler var. - Spark performans optimizasyonu ve hatta Spark uzerinde buyuk spatial verilerin islenmesi esnasinda performans optimizasyonu konularinda calistim. Sonuclari paylasacagim.  Onumuzdeki 12 aylik donem icerisinde algoritma calismalarina biraz ara vermeyi planliyorum. Daha ziyade tekrardan big-data ve devops konularina odaklanacagiz. Gorusmek uzere.