Pratik Bilgiler ve Komutlar-2

  1. Scala’da boşluklardan kelimeleri ayırma
  2. Scala ile dosya nasıl okunur? Scala dosya okuma
  3. Scala ile dosyaya yazma işlemi
  4. Scala uygulamasına komut satırından argüman gönderme
  5. Bir dizinde kaç dosya var Python ile nasıl öğrenilir?
  6. Elasticsearch Curl Query Örneği
  7. Ubuntu üzerine sbt kurmak
  8. Ubuntu server üzerinde root kullanıcısına geçiş yapmak
  9. Jupyter notebook geri plan – jupyter arkaplan – jupyter notebook background nasıl çalışır?
  10. Ubuntu terminalde bulunulan dizni gizleme(ubuntu komut satırı adres gizleme)
  11. Komut satırından Jupyter notebook nasıl kapatılır? – jupyter notebook stop
  12. Python virtualenv jupyter’a tanıtma – sanal ortamı jupyter’a tanıtma – jupyter virualenv
  13. Jupyter Notebook ile Scala Spark nasıl kullanılır? spylon
  14. Jupyter Notebook kernel kaldırma
  15. Jupyter Notebook kernel listeleme
  16. Linux açık portları listeleme listeleme
  17. Kafka topic message count – kafka topic kaç mesaj var?
  18. How to truncate kafka topic?
  19. Crontab her beş dakika – crontab every five minutes
  20. Netcat ile port kontrolü

1. Scala’da boşluklardan kelimeleri ayırma

Scala büyük veri işlemede oldukça popüler bir dil. Özellikle Spark kullananların bilmesinde çok fayda var. Çünkü Spark’ın ana dili Scala’dır. Veri manipülasyonunda sık sık sütunları veya kelimeleri birbirinden ayırmamız gerekir. En yaygın ayraç virgül olsa da boşluk veya tab ondan sonra gelen popüler ayraçlardır. Tek boşlukla ayırmak ayrılan kelimelerin sağında solunda gizli boşluklar kalmasına sebep olabilir. Bu yüzden ayraç olarak ” ” gibi tek boşluk değil de “\\s+” gibi birden fazla ardışık boşluk kullanımı ideal bir çözümdür.

"one   two   three".split("\\s+")

2. Scala ile dosya nasıl okunur? Scala dosya okuma

Bunun için scala.io.Source sınıfı kullanılır. Örnek kod parçası:

package V001_010_Inrodoction

import scala.io.Source
object V021ReadFromFile extends App {

  val source = Source.fromFile("src/matrix.txt")

  val lines = source.getLines()

  lines.foreach(println)

  /**
    * 32 14 98
    * 3 8 58
    * 92 16 4
    * 12 90 14
    */
  source.close()
}

3. Scala ile dosyaya yazma işlemi

Bunun için java.io.PrintWriter kullanabiliriz. Yukarıdaki matrisi dosyaya yazalım.

// Yazma
val pw = new PrintWriter("src/rowSums.txt")

// Her satırı yazdıralım.
matrix.foreach( row => pw.println(row))

pw.close()

4. Scala uygulamasına komut satırından argüman gönderme

Bir uygulmaya uygulama dışından dinamik olarak bazı parametreleri gönderebiliriz. Uygulama bu parametreleri args ile alır. Örneğin dosyanın okunacağı dizin ve yazılacağı dizin uygulamadan uygulamay değişebilir. Uygulama içinde sabit bir dizin yazmak esnekliği azaltacaktır.

// HelloYou.scala adlı dosya
object HelloYou extends App {
    if (args.size == 0)
        println("Hello, you")
    else
        println("Hello, " + args(0))
}

Uygulamayı derleyelim:

scalac HelloYou.scala

Ve komut satırından uygulamayı çalıştıralım:

$ scala HelloYou Erkan
Hello, Erkan

Yukarıdaki Erkan uygulama içinde args(0) ile karşılanır. HelloYou ise object adıdır.

5. Bir dizinde kaç dosya var Python ile nasıl öğrenilir?

import os, os.path
dosya_sayisi = len([name for name in os.listdir('dizin') if os.path.isfile(os.path.join('/dizin', name))]
print(dosya_sayisi)
544

6. Elasticsearch curl sorgu (query) örneği

Aşağıdaki örnek products indeksinde name alanında kuru üzüm arama sorgusuna örnektir.

curl -H 'Content-Type: application/x-ndjson' -XGET 'hpe.impektra.com:9200/products/_search?pretty&q=name:kuru\\üzüm'

7. Ubuntu üzerine sbt kurmak

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt

8. Ubuntu server üzerinde root kullanıcısına geçiş yapmak

Ubuntu server kurarken bizden bir kullanıcı ister ve bu kullanıcı root yetkilerine sahiptir ancak adı root değildir. root yetkisi gerektiren bir çok işlemi bu kullanıcı ile yapabiliriz. Ancak bazı komutlar kullanıcının bizzat root olmasını gerektirir. O yüzden kullanıcıyı değiştirip root yapmalıyız. Normalde kullanıcıyı su ile değiştiririz ancak bu durumda

sudo -i

kullanmamız gerekir.

9. Jupyter notebook geri plan – jupyter arkaplan – jupyter notebook background nasıl çalışır?

Jupyter notebook çalıştırdığımızda genelde bir cmd penceresini açık bırakmak zorunda kalırız. Aşağıdaki kodu kullanarak çalıştırdığımız takdirde komut satırında çalışmaya devam edebiliriz. Eğer logları incelemek istiyorsanız /dev/null yerine bir dosya gösterebilirsiniz.

Linux

jupyter notebook 2> /dev/null &

Windows

D:\>jupyter notebook 2> d:/tmp/jupyter_notebook_logs &

10. Ubuntu terminalde bulunulan dizni gizleme

Terminal içinde sık sık dizin değiştiririz. İçinde bulunduğumuz dizin genelde komut yazdığımız yerin solunda bulunur. Şayet dizin derinliği fazla olursa artık ekranın orta yerinde komut yazmanız gerekir ve hatta alt satıra bile inersiniz. Bunu istemiyorsanız ve ekranda bana komut yazacak yer kalsın diyorsanız kolayı var:

erkan@ubuntu-server:~/webscraping_tutorials/scrapy_official_site$
erkan@ubuntu-server:~/webscraping_tutorials/scrapy_official_site$ export PS1='\u@\h:$'

Sonuç:

erkan@ubuntu-server:$

Artık dizin değiştirseniz bile sol taraf aynı kalır.

erkan@ubuntu-server:$cd webscraping_tutorials/
erkan@ubuntu-server:$

11. Komut satırından Jupyter notebook nasıl kapatılır?

jupyter notebook stop

Çıktı:
Shutting down server on port 8888 ...
[I 09:15:34.505 NotebookApp] Shutting down on /api/shutdown request.
[I 09:15:34.505 NotebookApp] Shutting down 0 kernels
[1]+  Done                    jupyter notebook

Eğer port numarası varsayılan port numarasından (8888) farklı ise komutun sonuna port numarası eklenir.

jupyter notebook stop 8889

12. Python virtualenv jupyter notebook tanıtma

Bir python virtualenv’i jupyter notebook içinden kullanabiliriz. Üstelik aktif hale getirmeden. Ancak jupyter’e bu sanal ortamı tanıtmalıyız.

ipython kernel install --user --name=virtualenv_adi

13. Jupyter Notebook ile Scala Spark nasıl kullanılır? spylon

Jupyter notebook çok popüle bir notebook. Ancak genellikle python ile kullanılıyor. Spark kullanırken de PySpark kullanıyoruz. Ancak hem Jupyter’dan vaz geçmeyim hem de Scala kullanayım dersek bu mümkün mü? Evet mümkün. Spylon isminde bir paket ve küçük ayarlamalarla bunu yapabiliriz.

 python3.6 -m pip install spylon-kernel
 python3.6 -m spylon_kernel install --user

Jupyter Notebook’u başlattığınızda spylon-kernel görüyor olacaksınız. İlk satırı çalıştırdığınızda scala interpreter çalışacak ve SparkSession oluşturmaya çalışacaktır. Bu nedenle ilk hücreyi çalıştırmadan önce komut satırından mutlaka export SPARK_HOME=/spark/home/dizini/nereyse set etmeniz gerekir.

14. Jupyter Notebook kernel listeleme

jupyter kernelspec list

Örnek çıktı:
Available kernels:
  python3    /usr/share/jupyter/kernels/python3

15. Jupyter Notebook kernel kaldırma

 jupyter kernelspec remove <kaldirilacak_kernel_adi>

16. Linux açık portları listeleme – Hangi portlar kullanılıyor?

erkan@ubuntu-desktop:~$ sudo netstat -tulpn | grep LISTEN
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      639/rpcbind
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      643/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      980/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      5792/cupsd
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      4106/sshd: erkan@pt
tcp6       0      0 :::2181                 :::*                    LISTEN      4829/java
tcp6       0      0 :::111                  :::*                    LISTEN      639/rpcbind
tcp6       0      0 :::8080                 :::*                    LISTEN      1256/java
tcp6       0      0 :::22                   :::*                    LISTEN      980/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      5792/cupsd
tcp6       0      0 :::33977                :::*                    LISTEN      4829/java
tcp6       0      0 ::1:6010                :::*                    LISTEN      4106/sshd: erkan@pt

17. Kafka topic message count – kafka topic kaç mesaj var?

[train@localhost ~]$ kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092  --topic topic1 --time -1 --offsets 1 | awk -F  ":" '{sum += $3} END {print sum}'

Çıktı:
1407

18. How to truncate kafka topic?

SQL tarzında bir komut yok ancak topic’i önce silip sonra aynı isimle yaratırsanız içindeki mesajlar silinmiş olacaktır.

[train@localhost ~]$ kafka-topics.sh --bootstrap-server localhost:9092 --topic topic1 --delete

[train@localhost ~]$ kafka-topics.sh --bootstrap-server localhost:9092 --topic topic1 --create --partitions 3 --replication-factor 1
Created topic topic1.

[train@localhost ~]$ kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092  --topic topic1 --time -1 --offsets 1 | awk -F  ":" '{sum += $3} END {print sum}'
0

19. Crontab her beş dakika – crontab every five minutes

*/5 * * * *

20. Netcat ile port kontrolü

Netcat ile uzak sunucuda bir portun açık olup olmadığını kontrol edebiliriz. Açık bir port.

nc -zv cas1 9042
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.206.21:9042.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

Kapalı erişilemeyen bir port.

nc -zv cas1 7199
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection refused.

Eğer netcat kurulu değilse işletim sisteminize göre aşağıdaki komutlarla kurabilirsiniz.

sudo yum install nc                  [On CentOS/RHEL]
sudo dnf install nc                  [On Fedora 22+]
sudo apt-get install netcat [On Debian/Ubuntu]

 

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara