Dataframe 删除HDFS文件中的数据并调整Spark
我有一个脚本,可以删除存储在HDFS中的txt文件中的行。数据按天分区,每个分区的数据小于Dataframe 删除HDFS文件中的数据并调整Spark,dataframe,apache-spark,hadoop,pyspark,hdfs,Dataframe,Apache Spark,Hadoop,Pyspark,Hdfs,我有一个脚本,可以删除存储在HDFS中的txt文件中的行。数据按天分区,每个分区的数据小于10MB 代码将所有数据读入一个数据帧(DF1),保持跟踪或src数据,因此我可以在最后重新写入数据。 然后基于另一个单列数据帧(DF2),删除包含DF2上任何字符串的所有行 虽然代码需要很长时间才能完成,但数据量不大 Spark应如何配置以运行?更多的执行器、内核、内存? 或者我可以用另一种方式处理数据帧 首先,对于这种大小的数据,是否可以不使用Spark?而是读入原始资源并在VM/容器上运行它们 我们需
10MB
代码将所有数据读入一个数据帧(DF1
),保持跟踪或src数据,因此我可以在最后重新写入数据。
然后基于另一个单列数据帧(DF2
),删除包含DF2
上任何字符串的所有行
虽然代码需要很长时间才能完成,但数据量不大
Spark应如何配置以运行?更多的执行器、内核、内存?
或者我可以用另一种方式处理数据帧 首先,对于这种大小的数据,是否可以不使用Spark?而是读入原始资源并在VM/容器上运行它们 我们需要了解更多关于您现在使用的配置的信息,以提供建议:您当前使用了多少内核?是否接近最大利用率
此外,代码示例对诊断问题有很大帮助 广播DF2并运行相同的进程。这将提高性能 为了进一步减少运行时间,可以增加执行器的数量(--num executor)。由于每个分区只有10Mb左右,我建议您为每个执行器使用最少的资源(--executor memory 1G--executor cores 1)
这些是可以立即用于减少运行时间的少数几个选项。通过进一步分析数据和使用的序列化,您可以尝试进一步优化它。如果两个数据帧具有行ID,则执行广播连接、过滤和删除以获得最佳性能