Pratik Bilgiler ve Komutlar-2
- Scala’da boşluklardan kelimeleri ayırma
- Scala ile dosya nasıl okunur? Scala dosya okuma
- Scala ile dosyaya yazma işlemi
- Scala uygulamasına komut satırından argüman gönderme
- Bir dizinde kaç dosya var Python ile nasıl öğrenilir?
- Elasticsearch Curl Query Örneği
- Ubuntu üzerine sbt kurmak
- Ubuntu server üzerinde root kullanıcısına geçiş yapmak
- Jupyter notebook geri plan – jupyter arkaplan – jupyter notebook background nasıl çalışır?
- Ubuntu terminalde bulunulan dizni gizleme(ubuntu komut satırı adres gizleme)
- Komut satırından Jupyter notebook nasıl kapatılır? – jupyter notebook stop
- Python virtualenv jupyter’a tanıtma – sanal ortamı jupyter’a tanıtma – jupyter virualenv
- Jupyter Notebook ile Scala Spark nasıl kullanılır? spylon
- Jupyter Notebook kernel kaldırma
- Jupyter Notebook kernel listeleme
- Linux açık portları listeleme listeleme
- Kafka topic message count – kafka topic kaç mesaj var?
- How to truncate kafka topic?
- Crontab her beş dakika – crontab every five minutes
- 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]