Apache spark HDFS中复制分区的最佳方法
因此,我有一个用例,我想复制表的最后一个分区,并用新的分区列值将其插入同一个表中 需要注意的是,最后一个分区值总是已知的 我可以想出两种方法Apache spark HDFS中复制分区的最佳方法,apache-spark,hive,hdfs,parquet,impala,Apache Spark,Hive,Hdfs,Parquet,Impala,因此,我有一个用例,我想复制表的最后一个分区,并用新的分区列值将其插入同一个表中 需要注意的是,最后一个分区值总是已知的 我可以想出两种方法 在数据框中获取其中partitionColumn=partitionValue,并使用。withColumn更改分区值,然后使用保存表,然后执行无效/刷新操作 或者, 从最后一个分区目录复制parquet文件 创建新分区,将其粘贴到新目录中,并在末尾添加/newpatrionvalue/ 粘贴拼花地板文件 运行altertable 哪一种运行得更快?我认
数据框中获取其中partitionColumn=partitionValue
,并使用。withColumn
更改分区值,然后使用保存表
,然后执行无效/刷新操作
parquet
文件/newpatrionvalue/
altertable
哪一种运行得更快?我认为方法1会有一些额外的开销。Spark可能会尝试以不同的方式写入文件(可能是文件数或压缩,甚至是一些模式修改),因为从它的角度来看,您正在读取一个数据集,然后输出另一个数据集 使用方法2只需将文件复制到另一个文件夹,复制后的数据将完全相同。此外,您甚至可以替换
altertable。。添加分区。。位置..
使用MSCK修复表..
,它将使代码更干净,因为传递的参数更少
您(和您的团队)的偏好也很重要。如果您的所有工作流都已处于Spark中,那么从长远来看,添加其他类型的作业将造成更大的危害 我认为方法1将有一些额外的开销。Spark可能会尝试以不同的方式写入文件(可能是文件数或压缩,甚至是一些模式修改),因为从它的角度来看,您正在读取一个数据集,然后输出另一个数据集 使用方法2只需将文件复制到另一个文件夹,复制后的数据将完全相同。此外,您甚至可以替换
altertable。。添加分区。。位置..
使用MSCK修复表..
,它将使代码更干净,因为传递的参数更少
您(和您的团队)的偏好也很重要。如果您的所有工作流都已处于Spark中,那么从长远来看,添加其他类型的作业将造成更大的危害 这样做的目的是什么?为什么在两个分区中需要相同的数据?这是因为用例的缘故。这是一份每周的工作。如果看不到新的转储(边缘节点上的文件),我们应该将旧数据保留在新分区中。这有什么用?为什么在两个分区中需要相同的数据?这是因为用例的缘故。这是一份每周的工作。如果看不到新的转储(边缘节点上的文件),我们应该将旧数据保留在新分区中。