问题
新集群执行pyspark程序时,保存文件saveAsTextFile(),默认成了.deflate压缩文件,导致textFile()方法不能正常读取。
解决方法
修改pyspark的默认写文件的格式:
- 找到自己机器上的HADOOP_CONF_DIR路径
- 修改配置 HADOOP_CONF_DIR/mapred-site.xml,注释掉输出格式的这段代码,就会默认保存成文本格式了。
<property>
<name>mapreduce.job.counters.groups.max</name>
<value>50</value>
</property>
<!--
<property>
<name>mapreduce.output.fileoutputformat.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.type</name>
<value>BLOCK</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.DefaultCodec</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
-->
<property>
<name>zlib.compress.level</name>
<value>DEFAULT_COMPRESSION</value>
</property>
如果不注释,把属性mapreduce.output.fileoutputformat.compress.codec改成org.apache.hadoop.io.compress.GzipCodec,就会默认.gz 压缩格式了。