我想在S3上的Parquet中保留一份日志数据副本,用于临时分析。我主要通过Spark使用Parquet,它似乎只提供通过SQLContext.parquetFile()
和SQLContext.saveAsParquetFile()
读取和写入整个表的操作。
有什么方法可以将数据添加到现有的镶木地板表中吗没有写一份全新的副本特别是当它存储在S3中时?
我知道我可以为更新创建单独的表,在Spark中,我可以在查询时在Spark上形成相应的DataFrames的并集,但我对它的可扩展性表示怀疑。
如果需要,我可以使用Spark以外的东西。
附加到镶木地板文件的方法是使用SaveMode.Append
`yourDataFrame.write.mode(SaveMode.Append).parquet("/your/file")`
单独创建DataFrames
后,不需要联合它们,只需将与查询相关的所有路径提供给parquetFile(paths)
,即可获得一个DataFrame
。正如阅读拼花地板文件的签名:sqlContext.parquetFile(paths: String*)
所示。
在后台,在newParquetRelation2
中,您提供的所有文件夹中的所有.parquet
文件,以及所有_common_medata
和_metadata
都将被填充到一个列表中,并得到同等重视。