【发布时间】:2023-03-07 04:26:02
【问题描述】:
有没有办法在现有的 parquet 文件中添加新列?
我目前正在参加一场 kaggle 比赛,我已将所有数据转换为 parquet 文件。
情况就是这样,我将 parquet 文件读入 pyspark DataFrame,进行了一些特征提取并使用
将新列附加到 DataFramepysaprk.DataFrame.withColumn().
之后,我想将新列保存在源 parquet 文件中。
我知道 Spark SQL 带有 Parquet schema evolution,但该示例仅显示了带有键值的情况。
镶木地板“附加”模式也不能解决问题。它只会将新行附加到镶木地板文件中。 如果有办法将新列附加到现有的镶木地板文件而不是再次生成整个表? 或者我必须生成一个单独的新镶木地板文件并在运行时加入它们。
【问题讨论】:
-
如果您从架构上看,无法将新列附加到现有 parquet 文件中。这就像玩 parquet 文件的元数据一样。
-
虽然你可以尝试重写它..通过首先更改架构..我不太确定这在 spark-sql 中是如何发生的
-
是的,在 spark-sql 中更改模式很容易,但覆盖整个 parquet 文件的成本很高,这意味着我必须再次重新计算整个表。感谢您的评论,@AviralKumar
标签: apache-spark apache-spark-sql parquet