要求不解压,直接读取,而且需要按压缩包内文件目录分层分区,求大神解疑
1
luny 2018-12-14 10:12:35 +08:00
不懂 spark 和 hdfs,但是觉得这个需求和 2 者没有关系,应该是自行实现的。
比如找到 tar.gz 文件,用 tar tf 可以遍历内容。 |
2
capric 2018-12-14 10:33:54 +08:00
|
3
douglas1997 2018-12-14 10:43:46 +08:00 via iPhone
用类似 mxnet 的 rec 吧
|
4
qqq8724 OP |
5
fxxkgw 2018-12-14 11:46:04 +08:00
我碰到一个问题,hdfs 挂载到本机目录,python 起多进程,读 hdfs 下一个简单的文件,有概率导致挂载的 hdfs 进程占用 CPU 100%, hdfs hang 住。
|
6
kex0916 2018-12-14 13:49:24 +08:00
要按照压缩包文件目录分层分区要在 driver 侧就能拿到目录结构然后划分 partitions,然后每个 partition 读取该目录下的数据,但是压缩文件默认一般都是不 splitable 的,每个 partition 读取的时候也得完全解开后读取该分区的指定目录,这样各个分区都会有重复的工作。我建议是:
driver 侧将 tar.gz 先解压到临时目录,多个压缩文件可以按文件路径下发 task 来分布式解压,得到解压后的临时目录后,自己重写 FileInputFormat 来划分 split 然后采用 newAPIhadoopRDD 或者自己实现 RDD,按照临时目录下的目录来划分分区,执行完后把临时目录删除。 至于你说的不解压直接读,只要读还是得解压吧,可能只是在内存中完成解压而没有写到磁盘上。 |