【问题标题】:Loading multiple parquet files iteratively using pyspark使用 pyspark 迭代加载多个 parquet 文件
【发布时间】:2020-03-27 19:14:47
【问题描述】:

我寻找了类似的例子,但它们都在路径中有一个特定的字符串,最后是数字,因此能够迭代地执行 for 循环。 我的情况如下: 我在多个分区中有多个镶木地板文件,路径如下: s3a://path/idate=2019-09-16/part-{some random hex key1}.snappy.parquet s3a://path/idate=2019-09-16/part-{some random hex key2}.snappy.parquet etc...{some random hex key} 显然是不可预测的,因此我无法在迭代代码定义中创建规则。 我想要一个 for 循环,例如:

files="s3a://path/idate=2019-09-16/" 
for i in files
block{i}=spark.read.parquet(i)

其中block{i}block1block2 等,是从s3a://path/idate=2019-09-16/part-{some random hex **key1,2, etc**..}.snappy.parquet 创建的迭代数据帧

这可能吗?

【问题讨论】:

    标签: pyspark-sql parquet pyspark-dataframes


    【解决方案1】:

    你可以使用files="s3a://path/idate=2019-09-16/" 读取所有文件 df = spark.read.parquet(files)

    【讨论】:

    • 谢谢!这样可行。但是,我如何将它存储在迭代数据框中?例如,df[i]=spark.read.parquet(files) 我正在考虑编写它以使用名称中的迭代字符串来分隔镶木地板文件,然后将它们回调,但这似乎效率低下并且违背了在内核中完成所有操作的目的。有什么建议吗?
    • @thentangler 您可以一次直接读取所有文件并在df 上应用转换并使用df.write 编写它。在此处提供更多上下文并打开一个新问题,因为它不相关。如果它解决了您的原始查询,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多