Movielens data seti üzerinde Apache Flink uygulama örneği



Yeni bir maven projesi oluşturuyoruz.

pom.xml:



<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelversion>4.0.0</modelversion>

    <groupid>com.turkninja</groupid>
    <artifactid>flink-movie-example</artifactid>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java .version="">1.8</java>
        <flink .version="">1.8.0</flink>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-quickstart-java -->
        <dependency>
            <groupid>org.apache.flink</groupid>
            <artifactid>flink-java</artifactid>
            <version>${flink.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-clients -->
        <dependency>
            <groupid>org.apache.flink</groupid>
            <artifactid>flink-clients_2.11</artifactid>
            <version>${flink.version}</version>
        </dependency>

    </dependencies>


</project>



Programı çalıştıracağımız main methodunun ve Movie classının bulunduğu sınıf
import org.apache.flink.api.common.functions.FilterFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.tuple.Tuple3;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * @author ali turgut bozkurt
 * Created at 5/29/2019
 */

public class FilterMovie {

    public static void main(String[] args) throws Exception {

        final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        DataSource<tuple3 ong="" string="">&gt; lines = env.readCsvFile("src/main/resources/ml-latest-small/movies.csv")
                .ignoreFirstLine()
                .parseQuotedStrings('"')
                .ignoreInvalidLines()
                .types(Long.class, String.class, String.class);


        DataSet<movie> movies = lines.map(new MapFunction<tuple3 ong="" string="">, Movie&gt;() {

            public Movie map(Tuple3<long string=""> movieLine) throws Exception {
                String name = movieLine.f1;
                String[] genres = movieLine.f2.split("\\|");

                return new Movie(name, new HashSet<string>(Arrays.asList(genres)));
            }
        });

        movies = movies.filter(new FilterFunction<movie>() {
            public boolean filter(Movie movie) throws Exception {
                return movie.getGenres().contains("Action");
            }
        });

        System.out.println(movies.count());

        movies.print();

    }

    public static class Movie {
        private String name;

        private Set<string> genres;

        public String getName() {
            return name;
        }

        public Movie(String name, Set<string> genres) {
            this.name = name;
            this.genres = genres;
        }

        public Set<string> getGenres() {
            return genres;
        }

        @Override
        public String toString() {
            return "Movie{" +
                    "name='" + name + '\'' +
                    ", genres=" + genres +
                    '}';
        }
    }
}


Datasetimizi buradan indiriyouruz.

zip dosyasını açıp src/main/resources altına açıyoruz.

 Uygulamayı çalıştırdığımızda datasetimizde bulunan tüm action türünde filmlerin sayısını ve listesini ekranda görebiliriz.

 1828

Movie{name='Jet Li's Fearless (Huo Yuan Jia) (2006)', genres=[Action, Drama]} Movie{name='Fast and the Furious: Tokyo Drift, The (Fast and the Furious 3, The) (2006)', genres=[Action, Drama, Thriller, Crime]} Movie{name='Superman Returns (2006)', genres=[Action, Sci-Fi, Adventure, IMAX]} Movie{name='Army of Shadows (L'armée des ombres) (1969)', genres=[Action, Drama, Thriller, War]} Movie{name='Snakes on a Plane (2006)', genres=[Action, Horror, Thriller, Comedy]} Movie{name='Talladega Nights: The Ballad of Ricky Bobby (2006)', genres=[Action, Comedy]} Movie{name='Night at the Museum (2006)', genres=[Action, Fantasy, IMAX, Comedy]} Movie{name='Miami Vice (2006)', genres=[Action, Drama, Thriller, Crime]} Movie{name='Crank (2006)', genres=[Action, Thriller]} Movie{name='Chaos (2005)', genres=[Action, Drama, Thriller, Crime]} Movie{name='Crime Busters (1977)', genres=[Action, Adventure, Crime, Comedy]} Movie{name='Covenant, The (2006)', genres=[Action, Horror, Thriller]} Movie{name='Flyboys (2006)', genres=[Action, Adventure, Drama, War]} Movie{name='Guardian, The (2006)', genres=[Action, Adventure, Drama]} Movie{name='Marine, The (2006)', genres=[Action, Drama, Thriller]} Movie{name='Feast (2005)', genres=[Action, Horror, Thriller, Comedy]} Movie{name='Children of Men (2006)', genres=[Action, Sci-Fi, Adventure, Drama, Thriller]} Movie{name='Casino Royale (2006)', genres=[Action, Adventure, Thriller]} Movie{name='Déjà Vu (Deja Vu) (2006)', genres=[Action, Sci-Fi, Thriller]} Movie{name='Harsh Times (2006)', genres=[Action, Drama, Crime]} Movie{name='Blood Diamond (2006)', genres=[Action, Adventure, Drama, Thriller, Crime, War]} Movie{name='Eragon (2006)', genres=[Action, Adventure, Fantasy]} Movie{name='Rocky Balboa (2006)', genres=[Action, Drama]} Movie{name='Dam Busters, The (1955)', genres=[Action, Drama, War]} Movie{name='DOA: Dead or Alive (2006)', genres=[Action, Adventure]} Movie{name='Curse of the Golden Flower (Man cheng jin dai huang jin jia) (2006)', genres=[Action, Drama]} Movie{name='Black Christmas (2006)', genres=[Action, Horror, Thriller]} ..... ..... ..... Movie{name='Transformers: Age of Extinction (2014)', genres=[Action, Sci-Fi, Adventure]} Movie{name='Purge: Anarchy, The (2014)', genres=[Action, Horror, Thriller]} Movie{name='Guardians of the Galaxy (2014)', genres=[Action, Sci-Fi, Adventure]} Movie{name='The Expendables 3 (2014)', genres=[Action, Adventure]} Movie{name='Hercules (2014)', genres=[Action, Adventure]} Movie{name='Batman: Assault on Arkham (2014)', genres=[Action, Thriller, Crime, Animation]} Movie{name='Jupiter Ascending (2015)', genres=[Action, Sci-Fi, Adventure]} Movie{name='Teenage Mutant Ninja Turtles (2014)', genres=[Action, Adventure, Comedy]} Movie{name='Revenge of the Green Dragons (2014)', genres=[Action, Drama, Crime]} Movie{name='Sin City: A Dame to Kill For (2014)', genres=[Action, Thriller, Crime]} Movie{name='Maze Runner, The (2014)', genres=[Action, Sci-Fi, Mystery]} Movie{name='Walk Among the Tombstones, A (2014)', genres=[Action, Thriller, Crime, Mystery]}

Kaynak : pluralsight

KONDA araştırdı, Türkiye'nin nüfusu 100 kişi olsaydı

KONDA araştırdı, Türkiye'nin nüfusu 100 kişi olsaydı:
15 kişi kırsalda yaşıyor
3 kişi çiftçilik yapıyor
66 kişi kendi evinde oturuyor
61 kişi hala doğduğu yerde yaşıyor
18 kişi üniversite ve üstü eğitime sahip
Sadece 14 kişinin pasaportu var

Kaynak : EURONEWS



Apache Kafka - Apache Spark - Twitter Streaming Uygulaması

Apache Kafka - Apache Spark ile Twitter Streaming Uygulamasına aşağıdaki adresten ulaşabilirsiniz.

https://github.com/aliturgutbozkurt/kafka-spark-twitter-streaming




Apache Spark txt dosyası en çok kullanılan kelimeler

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;

import java.util.Arrays;

public class Main {
 public static void main(String[] args) 
 {  
  SparkConf conf = new SparkConf().setAppName("wordCounter").setMaster("local[*]");
  JavaSparkContext sc = new JavaSparkContext(conf);
  JavaRDD<String> inputData = sc.textFile("src/main/resources/input.txt");
  inputData.map(value -> value.replaceAll("[^a-zA-z\\s]", ""))
    .flatMap(value -> Arrays.asList(value.split(" ")).iterator())
    .filter(word -> word.length() > 1)
    .mapToPair(value -> new Tuple2<String,Long>( value, 1L))
    .reduceByKey((value1, value2) -> value1 + value2)
    .mapToPair(value -> new Tuple2<Long,String>(value._2, value._1)).sortByKey(false,1)
    .foreach(w->System.out.println(w));

  sc.close();
 }
}
Örnek Çıktı : (2509,to) (2011,that) (1552,and) (1420,of) (1287,this) (1246,we) (1243,is) (1098,you) (955,in) (833,on) (779,it) (713,container) (683,So) (670,do) (656,be) (654,for) (617,can) (610,have) (576,And) (552,Docker) (524,going) (480,if) (466,just) (456,its) (441,here) (434,will) (422,but) (414,as) (394,image) (392,now) (365,running) (354,with) (353,need) ..... ..... (1,Gerty) (1,Opt) (1,maths) (1,construct) (1,statement) (1,Course) (1,forwarding) (1,episode) (1,catching) (1,angry) (1,Target) (1,favour)

Rahman Usta - Java 8 Kitabı



Rahman Usta'nın Java 8 ve yeniliklerini içeren bu kitap ile, Java programlama dilinin en yeni özelliklerini öğrenebilirsiniz.

rahman usta ile ilgili görsel sonucujava 8 ile ilgili görsel sonucu

Java 8 Ebook kodcu.com 'da Rahman Usta tarafından kaleme alınan Java 8 yazılarını içermektedir.
https://github.com/rahmanusta/java8-ebook/blob/master/book.asc

IELTS Speaking Notlarım - Fikir Belirtmek

Merhaba bu yazımda aldığım IELTS speaking eğitimlerinden oluşturduğum speaking notlarımı aktarma çalışacağım.



Giving your opinion - I think

Konuşma esnasında fikrimizi belirtirken I think ile başlayabiliriz. Fakat I think çok sık kullanıldığında sınav komitesi tarafından çok hoş karşılanmaz. Bu kalıp yerine kullanabileceğimiz birçok kalıp mevcut :

As far as i am concerned,
-Should girls and boys  go to the same school or different schools?
-As far as i am concerned, boys and girls should go to seperate schools.

In my opinion,   (Bu da konuşma esnasında çok sık kullanılmamalı)
-Should girls and boys  go to the same school or different schools?
-In my opinion, boys and girls should go to the same schools.

It seems/appears to me that ..  (Daha çok bir konuya katılıp katılmamakta kullanılır)
-Do parents make the best teachers?
-It seems to me that parents do make the best teachers.

I would argue that ..  (Bu da daha çok bir konuya katılıp katılmamada kullanılır)
-Do you agree that the death penalty is a good form of punishment?
-I would argue that the death penalty is not a good form of punishment.

From my point of view/perspective,
-From my point of view, spiderman is not the best super hero.

i am inclined to believe that ..  (Arkadaşlarınızla tartışırken kullanmazsınız, çok formaldır. Ama sınavda düşüncenizi belirtirken kullanabilirsiniz)
-I am inclined to believe that the patient died of renal insufficiency, although clinical examination had been negative.

Buraya kadar hem speaking hem writing için kullanılabilen kalıplardı. Sınav esnasında daha çok speaking tarafında kullanılanlar ise şöyle :

If you ask me
-If you ask me, living in the town is better than living in a city.

To be honest, I think ..
-to be honest, I think living in a city is better than living in a small town.

Personally speaking, I think..
-Personally speaking, I think city life has more to offer than country life. 

From what I gather,
-From what I gather, peaple enjoy in acity more than living in a country.


Bir de fikrinizi belirtirken diğer insanların aksine bir görüş belirttiğinizi de ifade edebilirsiniz.

Some people may disagree with me, but as far as i am concerned
-Some people may disagree with me, but As far as i am concerned, traveling by car is better than traveling by plane.


Although some people disagree with me, as far as i am concerned
-Although some people disagree with me, as far as i am concerned watching al thre eposidos of lord of the rings back to back is a bad idea.

Eventhough many peaople thinks ..., I think ..

-Eventhough many peaople think making too much mony is important, I think more important things there are in our lifes.

Bir de fikrimiz sorulduğunda cevap verirken katıldığımız veya katılmadığımız noktalarda ölüçü belirtmemiz gerekebilir.

 People with more money are more successfull. Do you agree or disagree? And what do you extend to agree or disagree?

-I somewhat agree ... (Yüzde yüz değil ama biraz katılıyorum) 

-I partially agree .. (Kısmen katılıyorum)

-I suppose that people with more money are more successfull (Sanırım daha başarılılar, yine yüzde yüzxlük bir eminlik yok)


-I am confident people with more money are more successfull (Burada eminlik var)

-I absolutly agree ... (Kesinlikle katılıyorum) 

-I totally agree ..(Kesinlikle katılıyorum, writingde kullanılmaz formal değildir.)

-I completly agree (Tamamen katılıyorum, yine speaking için daha uygundur)

-I strongly agree .. (Kesinlikle katılıyorum, writingde kullanlıabilinir)



Linux Htop

Çogu kullanici linux isletim sisteminde çalisan processleri komut satirindan izlemek ve processlerin CPU ve Memory kullanimlarini görmek için top komutuna kullanir. 
Htop; linux sunucu üzerinde anlık olarak hangi işlemlerin ne kadar kaynak tükettiğini görebildiğiniz, CPU,ram ve anlık load durumlarını gösteren bir izleme programıdır.
htop uygulamasinda ilk göze çarpan farklilik, ekranin en üstünde tüm çekirdeklerin, hafizanin ve swap alaninin kullanim miktarini gösterir bir text grafigin yer almasi. Bu kisim top komutuna göre çok daha anlasilir ve kullanisli.






Kaynak : http://www.yazilimmutfagi.com/11444/genel/linux/linuxda-system-processlerini-izlemek-icin-htop-komutunu-kullanmak.aspx

Kaynak : https://www.netinternet.com.tr/bilgi-bankasi/linux-icin-htop-kurulumu

Bonus :

Official Spring Boot Starter'ları






Starters”: Spring boot bir çok starter jar'larına sahiptir. Örnek uygulamamızda pom.xml'de görebileceğiniz gibi spring-boot-starter-parent'a pom'un parent kısmında sahibiz. Bu özel starter Maven için default değerler sağlar. spring-boot-starter-parent ayrıca bağımlılık yönetimi bölümünü sağlar; böylece "kutsanmış" sürüm etiketlerini atlayabilirsiniz. Yani diğer starter bağımlılıklar için sürüm etiketi girmenize gerek kalmaz.
Diğer starterlar projenin ihtiyaçlarına göre bağımlılıkların indirilmesini sağlarlar. Mesela web uygulaması yapacaksak spring-boot-starter-web'i pom'un bağımlılıklar kısmına ekleriz.
Eğer örnek pom'umuzda  mvn dependency:tree pluginin goal'ini çalıştırısanız ,starter-web'in ihtiyacı olduğu bağımlıkları indirdiğini ve bağımlıkılık ağacını görebiliriz.(Tomcat web server'ı ve Spring Boot kendisi dahil olmak üzere.)
Offical starter'ların yazım deseni spring-boot-starter-* şeklindedir.
Eğer inherit edilmiş bağımlılıkların versiyon numarası değiştirilmek istenirse propertilerin override edilmesi yeterlidir.


 Spring Boot application starters


spring-boot-starter : Core starter, autoconfiguration destağini içerir, ayrıca logging ve YAML içindir.

spring-boot-starter-activemq :Apache ActiveMQ kullanmak için JMS messaging starter.

spring-boot-starter-amqp   : Spring AMQP ve Rabbit MQ kullanmak için gerekli starter.

spring-boot-starter-aop : Spring AOP veAspectJ kullanarak  aspect-oriented programming kullanmak için gerekli starter.

spring-boot-starter-artemis : Apache Artemis kullarak JMS messaging sağlayan starter.

spring-boot-starter-batch : Spring batch kullanmak için gerekli starter.

spring-boot-starter-cache : Spring framework'ün cach'ini kullanmak için gerekli starter.

spring-boot-starter-cloud-connectors : Heroku ve Cloud Foundry gibi cloud platformlarına bağlanmayı kolaylaştıran Spring Cloud Connectorlerini kullanmak için gerekli starter.

spring-boot-starter-data-cassandra : Dağıtık database olan Cassandra ve Spring Data Cassandra kullanmak için gerekli starter.

spring-boot-starter-data-couchbase : Document-oriented database olan Couchbase  ve Spring Data Couchbase kullanmak için gerekli starter.

spring-boot-starter-data-elasticsearch : Elasticsearch araması ve analatik motoru ve Spring Data Elastichsearch kullanmak için gerekli starter.

spring-boot-starter-data-gemfire : Gemfire veri deposu ve Spring Data Gemfire kullanmak için gerekli starter.

spring-boot-starter-data-jpa : Hibernate ile Spring Data JPA'nın kullanılması için gerekli starter.

spring-boot-starter-data-ldap : Spring data LDAP kullanılması için gerekli starter.

spring-boot-starter-data-mongodb : Document-oriented database olan MONGODB'nin ve spring data mongodb'nin kullanılması için gerekli starter.

spring-boot-starter-data-neo4j : Graph database olan neo4j'nin ve spring data neo4j'nin kullanılması için gerekli starter.

spring-boot-starter-data-redis : Key-value şeklinde veri deposu olan redisin ve spring data redisin kullanılması için gerekli olan starter.

spring-boot-starter-data-rest : Spring data repositorylerinin Spring data rest kullanılarak rest servislere açılmasını sağlamak için kullanılan starter.

spring-boot-starter-data-solr : Bir arama platformu olan Apache Solr'un Spring Data Solr ile kullanılmasını sağlayan starter.

spring-boot-starter-freemarker  :  MVC web aplikasyonlarının View kısmında Freemarker kullanmak için gerekli starter.

spring-boot-starter-groovy-templates : MVC web aplikasyonlarının View kısmında Groovy templateleri kullanmak için gerekli starter.

spring-boot-starter-hateoas : Spring MVC ve Spring HATEOAS ile hypermedia temelli rest servisler yaratmak için kullanılan starter.

spring-boot-starter-integration : Spring integration kullanmak için gerekli starter.

spring-boot-starter-jdbc : Tomcat JDBC connection pool ile JDBC kullanmak için gerekli starter.

spring-boot-starter-jersey : spring-boot-starter-web 'a alternatif olarak JAX-RS ve Jersey ile RES:Tful web aplikasyonları inşaa etmek için gerekli starter.

spring-boot-starter-jooq : spring-bootstarter-data-jpa veyaspring-boot-starter-jdbc' ye alternatif olarak SQL veritabanlarına erişmek için kullanılan JOOQ için gerekli starter.

spring-boot-starter-jta-atomikos : Atomikos kullanarak JTA transactionların kullanılmasını sağlayan starter.

spring-boot-starter-jta-bitronix : Bitronix kullanarak JTA transactionların kullanılmasını sağlayan starter.

spring-boot-starter-jta-narayana : Spring Boot Narayana JTA Starter

spring-boot-starter-mail : Java Mail ve Spring Framework’ün email gönderme desteği için kullanılan starter.

spring-boot-starter-mobile : Web aplikasyonları yaratmak için kullanılan Spring Mobile'in kullanılması için gerekli starter.

spring-boot-starter-mustache : MVC web aplikasyonlarının View kısmında mustache templateleri kullanmak için gerekli starter.

spring-boot-starter-security : Spring security kullanmak için gerekli starter.

spring-boot-starter-social-facebook : Spring social facebook kullanmak için gerekli starter.

spring-boot-starter-social-linkedin : Spring social linkedin kullanmak için gerekli starter.

spring-boot-starter-social-twitter : Spring social twitter kullanmak için gerekli starter.

spring-boot-starter-test : Spring boot uygulamalarını test etmek için ( JUnit, Hamcrest ve Mockito) gerekli starter.

spring-boot-starter-thymeleaf  : MVC web aplikasyonlarının View kısmında thymeleaf   kullanmak için gerekli starter.

spring-boot-starter-validation : Java Bean Validasyonunu Hibernate Validotor kullarak gerçekleştirmek için gerekli starter.

spring-boot-starter-web  : Spring MVC kullanarak RESTfuşl dahil olmak üzere web uygulamaları inşaa etmek için kullanılan starter. Tomcat'i default gömülü web container olarak kullanır.

spring-boot-starter-web-services : Spring web servislerini kullanmak için gerekli starter.

spring-boot-starter-websocket  : Spring Framework'in Websocket desteğini kullanrak Websocket uygulamaları geliştirmeyi sağlayan starter.

Spring Boot production starters


spring-boot-starter-actuator : Spring boot uygulamanızı monitor ve yönetme işlemini gerçekleştiren ve production-ready özellikler taşıyan Spring boot Actuator uygulamasının kullanımını sağlayan starter.

spring-boot-starter-remote-shell : CRaSH remote shell kullanarak uygulamanızı ssh ile bağlanarak uzaktan yönetmenizi ve monitor etmenizi sağlayan starter. Spring Boot 1.5.10 sürümünden sonra deprecated olmuştur.


Spring Boot technical starters 


spring-boot-starter-jetty : spring-bootstarter-tomcat'a alternatif olarak gömülü olarak jetty servlet container'ını kullanmanızı sağlayan starter.

spring-boot-starter-log4j2 : spring-boot-starterlogging'a alternatif olarak logging işlemleri için log4j2 kullanmanıza olanak sağlayan starter.

spring-boot-starter-logging : Logback kullanrak logging işleminizi gerçekleştiren starter. Default olarak gelen logging starter budur.

spring-boot-starter-tomcat : spring-bootstarter-web starter tarafından default olarak kullanalan tomcat server'ı gömülü olarak kullanan starter.

spring-boot-starter-undertow : spring-boot-startertomcat'a alternatif olarak gömülü olarak undertow servlet container'ı kullanan starter.

İlave olarak ekstra starterlar için listeye şuradan ulaşabilirsiniz :

https://github.com/spring-projects/spring-boot/blob/v1.5.10.RELEASE/spring-boot-starters/README.adoc 

Kaynak : https://docs.spring.io/spring-boot/docs/current/reference/pdf/spring-boot-reference.pdf

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo