使用Databricks Auto Loader加载S3子目录遇问题求助
Databricks Auto Loader加载S3带通配符子目录异常问题
问题描述
使用Databricks Auto Loader从S3存储桶加载子目录时失败,目标路径为 S3://path1/path2/databases*/paths/。databases目录下存在多个版本子目录,例如database_v1、database_v2、database_v3等。
报错的Auto Loader代码
autoloader_options = { "cloudFiles.format": "parquet", "cloudFiles.schemaLocation": f'{defs["schema_checkpoint_name"]}' } # AutoLoader readstream_dataframe_autoloader = ( spark.readStream .format("cloudFiles") .options(**autoloader_options) .load( 'S3://path1/path2/databases*/paths/ ' ) )
已尝试的无效操作
- 配置
"cloudFiles.recursiveFileLookup": "true",未解决问题 - 尝试传入目录列表,Databricks不支持该方式
可行的Spark Streaming对比代码
不使用Auto Loader,直接用Spark Streaming读取该路径可正常运行,代码如下:
df_transaction = ( spark.readStream .format("parquet") .option("rowsPerSecond", 100) .schema(<someschema>) .load("S3://path1/path2/databases*/paths/") )
内容的提问来源于stack exchange,提问作者Josh Gomez
相关产品推荐
相关产品推荐

