輸入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の中でオーバー送られたビューソケットのデータ: