如何在hadoop hdfs中解压文件

44u64gxh  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(452)

我在本地目录中有很多json文件(1mm)。我需要将这些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,而不是将1mm中的每个文件一次移动一个文件
我尝试了下面的选项和其他一些变体。

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\u dest的新文件,但它的大小为0,并且没有任何内容。

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

有些地方不对劲,我也找不到解决的办法。
如何从hdfs中的.tar中提取文件?

cidc1ykv

cidc1ykv1#

您可以编写简单的javaapi,使用 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

相关问题