Serialization 使用套接字在Flink中发送数据流;序列化问题

Serialization 使用套接字在Flink中发送数据流;序列化问题,serialization,apache-flink,flink-streaming,flink-cep,Serialization,Apache Flink,Flink Streaming,Flink Cep,我想将数据流从VM发送到主机,我正在使用方法writeSocket(),如下所示: joinedStreamEventDataStream.writeToSocket("192.168.1.10", 6998) ; 此处,JoinedStreamVentData流属于数据流类型 有人能告诉我如何将序列化程序传递给上述方法吗 提前感谢方法writeToSocket()包含3个参数:套接字主机和端口,以及用于序列化数据的SerializationSchema接口的实现。因此,您的实现可能如下所示:

我想将数据流从VM发送到主机,我正在使用方法
writeSocket()
,如下所示:

joinedStreamEventDataStream.writeToSocket("192.168.1.10", 6998) ;
此处,
JoinedStreamVentData流
属于
数据流
类型

有人能告诉我如何将序列化程序传递给上述方法吗

提前感谢方法
writeToSocket()
包含3个参数:套接字主机和端口,以及用于序列化数据的
SerializationSchema
接口的实现。因此,您的实现可能如下所示:

joinedStreamEventDataStream.writeToSocket(
    "192.168.1.10",  // host name
    6998,  // port
    new SerializationSchema<Integer>() {

        @Override
        public byte[] serialize(Integer element) {
            return ByteBuffer.allocate(4).putInt(element).array();
        }
    }
);
joinedStreamEventDataStream.writeToSocket(
“192.168.1.10”,//主机名
6998,//端口
新的SerializationSchema(){
@凌驾
公共字节[]序列化(整数元素){
返回ByteBuffer.allocate(4.putInt(element.array());
}
}
);
如果
JoinedStreamEventData流
具有
数据流
类型,则是正确的。

方法采用3个参数:套接字主机和端口,以及用于序列化数据的
序列化模式
接口的实现。因此,您的实现可能如下所示:

joinedStreamEventDataStream.writeToSocket(
    "192.168.1.10",  // host name
    6998,  // port
    new SerializationSchema<Integer>() {

        @Override
        public byte[] serialize(Integer element) {
            return ByteBuffer.allocate(4).putInt(element).array();
        }
    }
);
joinedStreamEventDataStream.writeToSocket(
“192.168.1.10”,//主机名
6998,//端口
新的SerializationSchema(){
@凌驾
公共字节[]序列化(整数元素){
返回ByteBuffer.allocate(4.putInt(element.array());
}
}
);

如果
JoinedStreamVentData流
具有
数据流
类型,则是正确的。

这取决于您希望如何从套接字读取数据。如果您希望它是数据的字符串表示形式,则可以通过以下方式执行:

joinedStreamEventDataStream.map(新的MapFunction(){
@凌驾
公共字符串映射(类型值)引发异常{
返回值.toString();
}
}).writeToSocket(主机名、端口、新的SimpleStringSchema());
如果要保留Flink的序列化格式,可以执行以下操作:

joinedStreamEventDataStream.writeToSocket(
主机名,
港口,
新的TypeInformationSerializationSchema(
joinedStreamEventDataStream.getType(),
env.getConfig());

如果您想以自己的序列化格式输出它,那么您必须实现自己的
序列化模式,正如Alex指出的那样。

这取决于您希望如何从套接字读取数据。如果您希望它是数据的字符串表示形式,则可以通过以下方式执行:

joinedStreamEventDataStream.map(新的MapFunction(){
@凌驾
公共字符串映射(类型值)引发异常{
返回值.toString();
}
}).writeToSocket(主机名、端口、新的SimpleStringSchema());
如果要保留Flink的序列化格式,可以执行以下操作:

joinedStreamEventDataStream.writeToSocket(
主机名,
港口,
新的TypeInformationSerializationSchema(
joinedStreamEventDataStream.getType(),
env.getConfig());
如果您想以自己的序列化格式输出它,那么您必须实现自己的
SerializationSchema
,正如Alex所指出的那样