将Spark Stream从Socket转换为DataFrame

时间:2019-03-20 19:34:03

标签: python pyspark spark-streaming

我与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。

如何处理传入的流数据?

1 个答案:

答案 0 :(得分:1)

您已经有一个数据框,只需更改架构即可。

只需在 load()调用之后添加此转换:

 stream.selectExpr("split(value, ' ')[0] as col1","split(value, ' ')[1] as col2", "split(value, ' ')[2] as col3")