因此,我有一个应用程序,其中有多个压缩文件位于hdfs目录中。我想创建一个rdd,其中每个任务都处理zip文件的内容。此时,我从文件名创建一个rdd,在每个任务中,使用hdfs客户机库读取zip文件的内容。但是,我不想这样做,而是让一个任务自动分配zip文件的内容。我认为这样会更有效,因为计算任务将转到包含zip文件的节点,而在我当前的方法中,我将数据带到计算任务,这意味着任务可能必须读取分布在其他节点上的zip文件。
jdzmm42g1#
您可以使用hadoop rdd api(示例Pypark代码):
newconf = {"mapred.input.dir": <<DIRECTORY>>} hadoopRdd01 = sc.newAPIHadoopRDD("org.apache.hadoop.mapreduce.lib.input.TextInputFormat", "org.apache.hadoop.io.Text", "org.apache.hadoop.io.Text", conf=newconf)
如果您使用的是zip/gz,那么文件是不可拆分的,因此每个zip都将是一个任务的输入并加载到一个分区。
1条答案
按热度按时间jdzmm42g1#
您可以使用hadoop rdd api(示例Pypark代码):
如果您使用的是zip/gz,那么文件是不可拆分的,因此每个zip都将是一个任务的输入并加载到一个分区。