我想使用数据块将Azure Blob存储文件读入spark。但是我不想为每个嵌套级别设置一个特定的文件或*
。
标准:**/*/
不起作用。
这些工作正常:
val df = spark.read.format("avro").load("dbfs:/mnt/foo/my_file/0/2019/08/24/07/54/10.avro")
val df = spark.read.format("avro").load("dbfs:/mnt/foo/my_file/*/*/*/*/*/*")
失败:
java.io.FileNotFoundException: No Avro files found. If files don't have .avro extension, set ignoreExtension to true
为
val df = spark.read.format("avro").load("dbfs:/foo/my_file/test/**/*")
答案 0 :(得分:1)
默认情况下,Spark会递归向下读取-因此您只需要指向根文件夹:
val df = spark.read.format("avro").load("dbfs:/foo/my_file/test/")
路径值实际上是一个正则表达式。
**
什么都不做
*
将起作用-尽管通常以{*}
的形式完成,这被称为“ globbing”。值得一读:How to use regex to include/exclude some input files in sc.textFile?