python-3.x - 使用通配符通过火花读取镶木地板文件
问题描述
我在 S3 目录中有许多镶木地板文件。目录结构可能因 vid 而异。像这样的东西:
bucketname/vid=123/year=2020/month=9/date=12/hf1hfw2he.parquet
bucketname/vid=456/year=2020/month=8/date=13/34jbj.parquet
bucketname/vid=876/year=2020/month=9/date=15/ghg76.parquet
我有一个列表,其中包含所有类似这样的视频
vid_list = ['123','456','876']
如何在没有有效性能问题的情况下一次读取 month=9 的所有文件?
current_month=9
temp_df = sqlContext.read.option("mergeSchema", "false").parquet('s3a://bucketname' + 'vid={}/year=2020/month={}/*/*.parquet'.format(*vid_list,current_month))
这给了我错误Path does not exist: file:/Users/home/desktop/test1/vid=123/year=2020/month=456/*/*.parquet;
。有没有办法以有效的方式实现这一目标?
解决方案
试试下面的代码:
vid_list = '(' + '|'.join(['123','456','876']) + ')'
current_month=9
temp_df = sqlContext.read.option("mergeSchema", "false").parquet('s3://bucketname/' + 'vid={}/year=2020/month={}/*/*.parquet'.format(vid_list,current_month))
// URL should look like: s3://bucketname/vid=(123|456|876)/year=2020/month=9/*/*.parquet
您的代码中的错误:月份值是456,应该是9
file:/Users/home/desktop/test1/vid=123/year=2020/month=456/*/*.parquet;
推荐阅读
- java - 内联然后优化方法真的是全程序优化吗?
- xpath - 提取多行长属性值
- python - 什么是turtle.colormode(255)?
- python - Flask-Login 问题:在身份验证和重定向后 current_user 仍然是 AnonymousUserMixin 类型
- python-3.x - 如何为数据框的单列获取 df.isnull()
- r - 导入股票价格技术分析的最佳方法是什么?
- python - 无法在终端中安装 prttsx3
- sql - SQL中的累积计数
- reactjs - TypeError - undefined 不是一个对象(评估'c.currentObservable.query.refetch')。在本机反应
- unity3d - 为道路系统获得 1x1 大小的地形形状的最佳方法?