pyspark 从S3存储桶读取分区数据

vdgimpew  于 5个月前  发布在  Spark
关注(0)|答案(1)|浏览(62)

我使用Spark阅读数据从s3桶下面是我的代码。

Dataset<Row> dataset = spark.read().parquet("s3a://my_bucket/backup/backup/year=2023/month=12/day=20/hour=0");

字符串
上面的代码运行速度很快,但是下面的代码花费了很多时间。下面的代码首先加载整个数据。请指导我。

Dataset<Row> dataset = spark.read().parquet("s3a://my_bucket/backup/backup/");


dataset. dataset(“dataset”);
dataset = spark.sql(“select * from mmi_data where year=2023 and month=12 and day=20 and hour=0”);
dataset.show);

cmssoen2

cmssoen21#

您的第二个查询并不首先加载整个数据,而是需要发现稍后要加载的文件。如果您有很多文件和分区,则此文件索引步骤可能需要相当长的时间。
加快此步骤的方法是使用 * 特殊模式匹配 * 字符来仅匹配您需要的对象(而不是基本路径中的所有对象)。在这里您可以找到支持的字符列表:https://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#globStatus-org.apache.hadoop.fs.Path-

相关问题