上一个问题:adding link
简而言之:我在spark中写了一个文件压缩器,它的工作方式是通过将目录下的所有文件读取到dataframe中,在dataframe上执行合并(根据需要的文件数量),将它们写回它们的目录,然后将它们压缩到snappy中。
我遇到的问题:我正在压缩的目录实际上是Apache hive中表下的分区,在将文件重写回其目录并对hive中的分区执行基本的选择查询之后,数据似乎正在被更改,例如:
此表:
| B栏| Column B |
| --| ------------ |
| 零| null |
| 1个| 1 |
变成:
| B栏| Column B |
| --| ------------ |
| 零| null |
| 零| null |
有人能帮助我理解为什么数据被更改,我如何修复它?
2条答案
按热度按时间7kjnsjlb1#
听起来你的问题是在
coalesce
指令中,当它统一数据时,它会替换它,并可能导致不一致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”)
查询统计的检查是完全可选的。