FLINKソケットは、シンクのRedisからデータを読み出します

輸入org.apache.flink.api.common.functions.MapFunction。

輸入org.apache.flink.api.java.tuple.Tuple2;
輸入org.apache.flink.streaming.api.datastream.DataStream;
輸入org.apache.flink.streaming.api.datastream.DataStreamSource。
輸入org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
輸入org.apache.flink.streaming.connectors.redis.RedisSink;
輸入org.apache.flink.streaming.connectors.redis.common.config.FlinkJedisPoolConfig;
輸入org.apache.flink.streaming.connectors.redis.common.mapper.RedisCommand;
インポートorg.apache.flink.streaming.connectors.redis.common.mapper.RedisCommandDescription;
 インポートorg.apache.flink.streaming.connectors.redis.common.mapper.RedisMapper; 

/ ** 
 * FLINKソケットは、シンクのRedisからデータを読み込むための
 * 
 * / 
パブリック クラスMyRedisSink {
     公共の 静的な 無効メイン(文字列[] argsが)スロー例外{
         // 実行環境取得 
        StreamExecutionEnvironmentをENV = StreamExecutionEnvironment.getExecutionEnvironment(); 
        
        // インストールコマンドNC:NC yumを-Yインストール
         // NCを- L 33069 ##ラインにより入力文字ライン次に、コマンドを実行し
        DataStreamSourceの<string> = env.socketTextStreamデータストリーム( "106.12.241.89"、33069、 "\ N-" ); 

        // lpsuh reids_words =>ソケット結局Redisのに格納されたデータを介して送信// 結合データ、 Tuple2に文字列<文字列、文字列> 
        でDataStream <Tuple2 <文字列、文字列>> redis_wordsData = データストリーム
                の.map(新新 MapFunction <文字列、Tuple2 <文字列、文字列>> (){ 
                    @Override 
                    公共 Tuple2と、Map <String、String>( S文字列)スロー例外{ 
                        するSystem.out.printlnを(「ソケットから送られたデータ:」+ S)。
                        返す 新しい Tuple2 <>( "reids_words" 秒)。
                    } 
                })。

        // 创建のRedis的配置 
        FlinkJedisPoolConfigビルド= 新しい。。FlinkJedisPoolConfig.Builder()setHost( "127.0.0.1")setPort(6379 ).build(); 

        // 创建redissink 
        RedisSink <Tuple2 <文字列、文字列>> redisSink = 新しい RedisSink <>(ビルド、新しいMyRedisMapper()); 

        redis_wordsData.addSink(redisSink)。

        env.execute( "MyRedisSink" ); 
    } 

    パブリック 静的 クラス MyRedisMapper 実装 RedisMapper <Tuple2 <文字列、文字列>> {
         / **
         *取得しRedisのキーが受信されたデータから操作される
         * / 
        @Override 
        パブリックストリングgetKeyFromData(Tuple2 <文字列、文字列> データ){
             戻り data.f0; // 最初の要素は
        } 

        / ** 
         *から受信示しデータ取得動作に必要な値のRedis 
         * / 
        @Override 
        パブリックストリングgetValueFromData(Tuple2 <文字列、文字列> データ){
             戻り data.f1; // 第二素子
        } 

        @Override 
        公共RedisCommandDescription getCommandDescription(){
             戻り 新しい新しい(RedisCommandをRedisCommandDescriptionを.LPUSH); 
        } 
    } 
}

 

NCアナログ送信データコマンド:

 

コンソールの情報を印刷:

データは、ソケットを介して送信:AA 
BB:データは、ソケット介して送信
データをソケットを介して送信:CCの
DD:データは、ソケット上送ら
:ソケットを介してデータを送信する 11件
のデータがソケット上で送信された: 22

 

Redisの中でオーバー送られたビューソケットのデータ:

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/linjiqin/p/12570816.html