Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在spark streaming-JAVA-spark中为来自tcp套接字的数据提供模式_Java_Csv_Sockets_Apache Spark - Fatal编程技术网

在spark streaming-JAVA-spark中为来自tcp套接字的数据提供模式

在spark streaming-JAVA-spark中为来自tcp套接字的数据提供模式,java,csv,sockets,apache-spark,Java,Csv,Sockets,Apache Spark,我有两个java程序: 在一个java程序中,我有一个serversocket等待来自第二个java程序的连接。当连接到达时,第一个java程序读取csv并通过套接字逐行发送给第二个java程序 第二个java程序是spark结构化流媒体 我的问题是如何知道csv模式,以便在spark结构化流媒体中进行操作? 谢谢 TCP程序: ServerSocket ss = new ServerSocket(3434); Socket socket = ss.accept(); BufferedWri

我有两个java程序:

  • 在一个java程序中,我有一个serversocket等待来自第二个java程序的连接。当连接到达时,第一个java程序读取csv并通过套接字逐行发送给第二个java程序
  • 第二个java程序是spark结构化流媒体
我的问题是如何知道csv模式,以便在spark结构化流媒体中进行操作? 谢谢

TCP程序

ServerSocket ss = new ServerSocket(3434);
Socket socket = ss.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOuputStream()));
BufferedReader reader = new BufferedReader(new FileReader(("tmp.csv")));
while((line = reader.readLine()) != null)
{
    writer.write(line);

}
SparkSession sp = SparkSession.builder().appName("MyApp").master("local[*]").getOrCreate();
Dataset<Row> line = sp.readStream().format("socket").option("host", "localhost").option("port", 3434).load();
第二个带有Spark结构化流媒体的JAVA程序

ServerSocket ss = new ServerSocket(3434);
Socket socket = ss.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOuputStream()));
BufferedReader reader = new BufferedReader(new FileReader(("tmp.csv")));
while((line = reader.readLine()) != null)
{
    writer.write(line);

}
SparkSession sp = SparkSession.builder().appName("MyApp").master("local[*]").getOrCreate();
Dataset<Row> line = sp.readStream().format("socket").option("host", "localhost").option("port", 3434).load();

这回答了你的问题吗?不,我的朋友。我希望从tcp套接字获得的行在数据帧中成为一行