【发布时间】:2017-09-16 22:33:55
【问题描述】:
我有大量的 hadoop 存档 .har 格式的数据。因为,har 不包含任何压缩,我正在尝试进一步 gzip 并将其存储在 HDFS 中。我唯一可以正常工作的是:
harFile.coalesce(1, "true")
.saveAsTextFile("hdfs://namenode/archive/GzipOutput", classOf[org.apache.hadoop.io.compress.GzipCodec])
//`coalesce` because Gzip isn't splittable.
但是,这并没有给我正确的结果。生成了一个 Gzipped 文件,但输出无效(单行表示 rdd 类型等)
任何帮助将不胜感激。我也对任何其他方法持开放态度。
谢谢。
【问题讨论】:
-
HAR 档案中有哪些内容——CSV、JSON、非结构化文本(例如日志)、二进制文件?您是否考虑过取消归档每个 HAR、GZipping 内部的每个文件并重新归档?如果不是二进制文件,您是否考虑将每个 HAR(或多个 HAR)的内容合并到一个 GZipped(或 BZipped)文件中,并使用 MR 或 Spark 作业?如果是结构化的,您是否考虑过将每个 HAR(或多个 HAR)的内容合并为列格式,例如 Parquet 或 ORC,并使用 GZip 压缩?
-
@SamsonScharfrichter har 将包含纯文本文件或镶木地板文件。没有什么像 xmls 但我不希望数据拆分。对每个文件进行 Gzip 压缩是一个问题,因为 har 可能包含 350 多个目录,并且在每个目录中都会有一个文件。我不知道该怎么做。我尝试使用 PIG 使用 GZip Compression 压缩该单个 har 文件。它确实成功地压缩了但创建了部分文件,这又是不受欢迎的,因为 GZip 不可拆分。最后,不能合并多个 HAR,因为每个 har 需要单独压缩。
标签: scala hadoop apache-spark compression hdfs