Spark结构化流-从嵌套目录读取文件

时间:2018-07-31 03:35:43

标签: apache-spark spark-streaming

我有一个将CSV文件放在嵌套目录中的客户端,如下所示,我需要实时读取这些文件。我正在尝试使用Spark结构化流媒体来做到这一点。

Data:
/user/data/1.csv
/user/data/2.csv
/user/data/3.csv
/user/data/sub1/1_1.csv
/user/data/sub1/1_2.csv
/user/data/sub1/sub2/2_1.csv
/user/data/sub1/sub2/2_2.csv

代码:

val csvDF = spark
  .readStream
  .option("sep", ",")
  .schema(userSchema)      // Schema of the csv files
  .csv("/user/data/")

要添加任何配置以允许从结构化流中的嵌套目录中读取火花。

2 个答案:

答案 0 :(得分:1)

据我所知,Spark没有这样的选项,但是它支持path中的glob使用。

val csvDF = spark
  .readStream
  .option("sep", ",")
  .schema(userSchema)      // Schema of the csv files
  .csv("/user/data/*/*")

也许它可以帮助您设计glob路径并在一个流中使用它。

希望有帮助!

答案 1 :(得分:1)

我能够使用全局路径在子目录中流式传输文件。

为他人着想而张贴在这里。

inputPath = "/spark_structured_input/*?*"
inputDF = spark.readStream.option("header", "true").schema(userSchema).csv(inputPath)
query = inputDF.writeStream.format("console").start()