在pyspark中运行压缩后,配置单元表中的数据发生更改

44u64gxh  于 2023-08-02  发布在  Spark
关注(0)|答案(2)|浏览(98)

上一个问题:adding link
简而言之:我在spark中写了一个文件压缩器,它的工作方式是通过将目录下的所有文件读取到dataframe中,在dataframe上执行合并(根据需要的文件数量),将它们写回它们的目录,然后将它们压缩到snappy中。
我遇到的问题:我正在压缩的目录实际上是Apache hive中表下的分区,在将文件重写回其目录并对hive中的分区执行基本的选择查询之后,数据似乎正在被更改,例如:
此表:
| B栏| Column B |
| --| ------------ |
| 零| null |
| 1个| 1 |
变成:
| B栏| Column B |
| --| ------------ |
| 零| null |
| 零| null |
有人能帮助我理解为什么数据被更改,我如何修复它?

7kjnsjlb

7kjnsjlb1#

听起来你的问题是在coalesce指令中,当它统一数据时,它会替换它,并可能导致不一致

5uzkadbs

5uzkadbs2#

1.使用下面的代码可以执行带有hive分区表压缩的Pyspark。
1.确保您提到了分区列

table_name =“your_table_name”
partition_columns = [“partition_col1”,“partition_col2”]
spark.sql(f“MSCK REPAIR TABLE {DB_name}.{table_name}”)
spark.sql(f“ANALYZE TABLE {table_name} COMPUTE STATISTICS”)

查询统计的检查是完全可选的。

相关问题