将数据追加到外部存储为实木复合地板文件的自动分区数据框中

时间:2019-08-02 19:39:18

标签: pyspark

尝试以附加模式将属性上的自动分区Dataframe数据写入外部存储会覆盖镶木地板文件。

我有大量无法一次性加载的数据。因此,我一次循环读取一个文件夹中的数据。在每次迭代中,我都会基于某个属性对数据进行分区,并使用saveAsTable在Amazon S3上编写实木复合地板文件。我发现我的s3文件夹在每次迭代中都消失了。我想将每次迭代中的数据添加到分区文件夹中的蜂巢存储中,以便对数据进行分类,并且只能读取我要处理的类别。

这是我用来保存数据框的命令。

DF.write.partitionBy('Type').format('parquet').mode("append").saveAsTable(('AllComponents', path='s3a://xxx/<Path>')

for Pos1 in HexKey: 
    folderKey = "{}".format(Pos1)

    spark = SparkSession.builder \
        .getOrCreate()

    if DataSetSchema is None:
       log.warn("Reviewing schema")
       AllComponentsDF = spark.read \
         .format('com.databricks.spark.xml') \
         .load('s3a://location' + folderKey + '0/00/*')
       DataSetSchema = AllComponentsDF.schema
    else:
        log.warn("Reading folder {}".format(Pos1))  
        AllComponentsDF = spark.read \
            .format('com.databricks.spark.xml') \
            .load('s3a://location/' + folderKey + '0/00/*', schema=DataSetSchema)
        AllComponentsDF.write.partitionBy('Type').format('parquet').mode("append").saveAsTable(('AllComponents', path='s3a://spark-cluster-boomi/AllComponents')

0 个答案:

没有答案