【问题标题】:spark read blob storage using wildcardspark使用通配符读取blob存储
【发布时间】:2019-12-29 10:17:18
【问题描述】:

我想使用数据块将 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/**/*")

【问题讨论】:

    标签: apache-spark azure-blob-storage databricks azure-databricks


    【解决方案1】:

    默认情况下,Spark 向下递归读取 - 因此您只需指向根文件夹:

    val df = spark.read.format("avro").load("dbfs:/foo/my_file/test/")
    

    路径值实际上是一个正则表达式。

    ** 什么都不做

    * 可以工作——尽管它通常以{*} 的形式完成,即通配符。这个值得一读:How to use regex to include/exclude some input files in sc.textFile?

    【讨论】:

    • val df = spark.read.format("avro").load("dbfs:/foo/my_file/test") 失败,尾随斜杠是强制性的。
    • 不幸的是,再次尝试时仍然失败。
    • 奇怪。我什至可以在不使用本地文件系统从 blob 存储读取时复制它。这个问题似乎只有在使用格式avro阅读时才会出现。
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2012-06-16
    • 1970-01-01
    • 2017-10-24
    • 2019-03-08
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多