hdfs 多個檔案合併 合併多個檔案遞迴HDFS

2021-10-12 13:35:31 字數 1713 閱讀 4374

在hdfs我的資料夾路徑結構是這樣的:合併多個檔案遞迴hdfs

/data/topicname/year=2017/month=02/day=28/hour=00

/data/topicname/year=2017/month=02/day=28/hour=01

/data/topicname/year=2017/month=02/day=28/hour=02

/data/topicname/year=2017/month=02/day=28/hour=03

這些路徑裡面我有很多小規模的json檔案。我正在編寫乙個shell指令碼,它可以將所有這些單獨目錄中存在的所有檔案合併為乙個單獨的檔名,具體取決於路徑。

例子:內的所有jsons /資料/ topicname /年= 2017 /月= 02 /天= 28 /小時= 00成乙個合併的檔案full_2017_02_28_00.json內

所有jsons /資料/所有jsons在/ data/topicname/year = 2017/month = 02/day = 28/hour = 2/day = 28/hour = 01到乙個合併檔案full_2017_02_28_01.json

02合併到乙個合併檔案full_2017_02_28_02.json中,依此類推。

在上述模式中保留檔名是我將嘗試實現的第二職業。目前我可以對檔名進行硬編碼。

但是,目錄路徑結構內部的遞迴串聯沒有發生。

到目前為止,我在下面嘗試:

hadoop fs -cat /data/topicname/year=2017/* | hadoop fs -put - /merged/test1.json

錯誤: -

cat: `/data/topicname/year=2017/month=02/day=28/hour=00': is a directory

cat: `/data/topicname/year=2017/month=02/day=28/hour=01': is a directory

cat: `/data/topicname/year=2017/month=02/day=28/hour=02': is a directory

遞迴貓是不會發生在上述嘗試

hadoop fs -ls /data/topicname/year=2017/month=02 | find /data/topicname/year=2017/month=02/day=28 -name '*.json' -exec cat {} \; > output.json

錯誤: -

find: 『/data/topicname/year=2017/month=02/day=28』: no such file or directory

這是在做本地fs而不是hdfs發現上面嘗試

for i in `hadoop fs -ls -r /data/topicname/year=2017/ | cut -d' ' -f19` ;do `hadoop fs -cat $i/* |hadoop fs -put - /merged/output.json`; done

錯誤: -

cannot write output to stream message is repeated multiple times

file /merged/output.json is repeated a few times

這是如何實現的?我不想使用spark。

2017-03-01

earl

合併多個word檔案

unit wordoperate 2008 10 inte ce uses sysutils,comobj,shellapi,windows 合併多個word檔案,存到乙個指定檔案裡 引數說明 arrword 為帶路徑的word檔名稱陣列 outfilename 為合併後的檔名稱 binsertpa...

excel多個檔案合併

多個excel檔案合併成乙個需要用ms office wps是不行的 1.將所有檔案放在乙個資料夾裡 2.在資料夾裡新建乙個空的excel開啟 如果是合併多個sheet的話,右鍵sheet全部選中,點選移動或複製工作表,選擇乙個工作表就o了 sub 合併當前目錄下所有工作簿的全部工作表 dim my...

python縱向合併(按行合併)多個csv檔案

將多個csv檔案合到乙個csv檔案 import os import pandas as pd import glob csv list glob.glob 14 points 檢視同資料夾下的csv檔案數 print u 共發現 s個csv檔案 len csv list print u 正在處理....