我的项目中需要实时处理消息文件(.txt)。我曾经从第三方实时接收消息文件到我们的登陆区,然后我们应该从那里拾取文件进行处理。下面是建议的数据流。
源->着陆区-> HDFS-> PySpark->实木复合地板/ CSV->数据存储
每当我在着陆区中看到一个新文件时,都应将其拾取并移至HDFS,然后,下游进程应实时对其进行处理。我可以通过PySpark流处理这种用例吗?如果是这样,请尽可能分享一些详细信息和链接。
答案 0 :(得分:1)
是的,您可以使用火花结构化流来实时处理消息文件。结构化流支持各种输入源,您可以配置为使用“ FileSource ”作为数据源。
Filesource读取写入目录的文件作为数据流。支持的文件格式为text,csv,json,orc,parquet。请注意,文件必须原子放置在给定目录中,在您将文件从“着陆区”自动移动到HDFS的情况下,它可以正常工作。
有关更多详细信息,请参阅:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#input-sources 适用于API:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.streaming.DataStreamReader
注意结构化流支持从嵌套目录中读取数据,我们可以提供globpaths作为Filesource路径的输入。请参阅:Spark Structured Streaming - Read file from Nested Directories