我在本地目录中有很多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中提取文件?
1条答案
按热度按时间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