我为一个客户工作,我应该把一些文件压缩到hdfs与snappy。我的问题是snappy编解码器没有在中定义 mapred-site.xml
或者 hdfs-site.xml
不知怎的,我不得不把文件 hdfs put
他们应该被压缩。没有机会更改配置文件,因为它是一台生产机器,其他人正在积极使用它。
另一个建议的解决方案是将文件导入hdfs而不进行压缩,然后通过压缩创建配置单元外部表,并在删除未压缩文件的同时使用其源文件。但这是一个很长的路要走,并不能保证工作。
如有任何关于使用的建议,我们将不胜感激 hdfs put
用一些参数来压缩文件。
3条答案
按热度按时间5fjcxozz1#
假设您在hdfs中有一个spark日志文件,它没有压缩,但您想打开它
spark.eventLog.compress true
在spark-defaults.conf
继续压缩旧的原木。map reduce方法最有意义,但作为一种方法,您也可以使用:然后直接上传。
安装snzip可能与此类似:
单个文件的往返行程可以是:
或使用gohdfs:
bmp9r5qi2#
我建议您编写map reduce job来压缩hdfs中的数据。我不知道是否有一种方法可以对hadoopput操作进行自动压缩,但假设它不存在。一种方法是将已压缩的文件:
另一种方法是在mapreduce作业中压缩它。作为一个选项,您可以使用hadoop streaming jar在hdfs中压缩文件:
cmssoen23#
我们用一些场景来解决这个问题
如果是rdd,则将其转换为Dataframe。
RDD.toDF
不需要参数,如果您想指定列名,您可以这样做rdd.toDF("c1","c2","c3")
在转换为df之后,假设您想将其设置为具有snappy压缩的parquet文件格式,您需要使用sqlcontext对于gzip压缩
在此之后,使用以下命令
XXDF.write.parquet("your_path")
它将通过快速压缩保存