如何在hadoop hdfs中解压缩文件

问题描述 投票:0回答:1

我在本地目录中有很多JSON文件(1 MM)。我需要将这些JSON文件直接移到HDFS中。

[创建了一个包含所有JSON文件的tar。

tar -cvf filename.tar local_folder_name

将.tar文件移动到hdfs目录中

hdfs dfs -put filename.tar hdfs://nameservice1/user/hive/warehouse/dbname.db/table_name/

我需要从hdfs中的tar中提取所有文件,并将它们作为单独的JSON文件保留在hdfs中。我使用tar选项的原因是将单个文件移动到hdfs,而不是一次将1 MM中的每个文件一次移动到一个文件。(这非常慢,不确定是否会完成)

我尝试了以下选项以及其他一些变体。

hdfs dfs -cat hdfs://nameservice1/user/hive/warehouse/dbname.db/table_name/filename.tar | tar -x | hdfs dfs -put - /user/hive/warehouse/dbname.db/table_name/untar_dest

我在hdfs目录中看到一个名为untar_dest的新文件,但是它的大小为0,并且里面没有任何文件。

-rwxrwx--x+  3 hive hive          0 2020-05-15 21:23 /user/hive/warehouse/dbname.db/ctable_name/untar_dest

某事不正确,我无法找到解决此问题的方法。

如何从HDFS中的.tar中提取文件?

json hadoop hdfs cloudera tar
1个回答
0
投票

您可以编写简单的Java api,并使用org.apache.hadoop.fs.FileUtil进行解压缩>

https://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/fs/FileUtil.html

一些示例,您可以在这里找到

https://www.codota.com/code/java/methods/org.apache.hadoop.fs.FileUtil/unTar

© www.soinside.com 2019 - 2024. All rights reserved.