Serialization 使用套接字在Flink中发送数据流;序列化问题
我想将数据流从VM发送到主机,我正在使用方法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接口的实现。因此,您的实现可能如下所示:
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所指出的那样