apache-spark - spark使用通配符读取blob存储
问题描述
我想使用数据块将 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/**/*")
解决方案
默认情况下,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?
推荐阅读
- html - 如何摆脱从 Android 手机查看的 Html 页面中的空白?
- c++ - 如何转换模板类
- python - Python 列表——去重和添加子列表元素
- c - 为什么C的堆内存中的数组中只有一个奇怪的元素而其他都可以?
- mysql - 具有第三个表的外键的表之间的 Django ORM 内部连接
- r - r: unnest_tokens() 不适用于特定文件
- c# - 使用 C# (SMO) 恢复包含 FILESTREAM 数据的数据库的最佳方法
- c++ - 创建对象以添加到指针数组的函数
- c++ - (Qt) QTabWidget 和 QPlainTextEdit
- javascript - 在水平日历上显示时间数据