首页 文章

在S3中逐步向Parquet表添加数据

提问于
浏览
1

我想在S3上的Parquet中保留我的日志数据的副本,以进行临时分析 . 我主要通过Spark与Parquet合作,并且似乎只提供通过 SQLContext.parquetFile()SQLContext.saveAsParquetFile() 读取和写入整个表的操作 .

有没有办法将数据添加到现有的Parquet表而不编写全新的副本,特别是当它存储在S3中时?

我知道我可以为更新创建单独的表,在Spark中我可以在查询时形成Spark中的相应DataFrame的联合,但我对它的可扩展性有疑问 .

如果需要,我可以使用除Spark之外的其他东西 .

3 回答

  • 2

    附加到镶木地板文件的方法是使用 SaveMode.Append

    `yourDataFrame.write.mode(SaveMode.Append).parquet("/your/file")`
    
  • 0

    单独创建它们后不需要联合 DataFrames ,只需将与查询相关的所有路径提供给 parquetFile(paths) 并获取一个 DataFrame . 正如阅读镶木地板文件的签名: sqlContext.parquetFile(paths: String*) 暗示 .

    在引擎盖下,在 newParquetRelation2 中,您提供的所有文件夹中的所有 .parquet 文件以及所有 _common_medata_metadata 将被填充到single list并同等地考虑 .

  • 3

    Amazon S3不支持追加 . S3是CDN(内容分发网络),并不意味着支持写密集型操作 . 它针对并行读取进行了优化 .

    执行此操作的唯一方法是将数据分割为多个文件,或将EC2用作文件服务器并仅在一个地方附加 .

相关问题