我与SparkSession建立了套接字连接,该套接字连接将一行.csv文件发送到我的Stream。
到目前为止,我的(PySpark-)代码如下:
stream = spark.readStream.format('socket').option('host', 'localhost').option('port', 5555).load()
stream.writeStream.format('console').start().awaitTermination()
这将.csv文件的行打印在这样的一列中:
+-----------------+
| value|
+-----------------+
|[2, C4653, C5030]|
+-----------------+
但是我实际上想拥有的是:
+-----+-----+-----+
| col1| col2| col3|
+-----+-----+-----+
| 2|C4653|C5030|
+-----+-----+-----+
我想将此用作DataFrame来馈送ML-Pipeline。
如何处理传入的流数据?
答案 0 :(得分:1)
您已经有一个数据框流,只需更改架构即可。
只需在 load()调用之后添加此转换:
stream.selectExpr("split(value, ' ')[0] as col1","split(value, ' ')[1] as col2", "split(value, ' ')[2] as col3")