hdfs ユーザーから次の cli を実行すると正常に動作します。
# su hdfs
$ hadoop fs -du -s /home/test/* | awk '{ sum += $1 } END { print sum }'
4182692
ただし、su -l hdfsを使用している間にrootで実行すると、次の結果が表示されます。
su -l hdfs -c " hadoop fs -du -s /home/test/* | awk '{ sum += $1 } END { print sum }' "
awk: cmd. line:1: { sum += } END { print sum }
awk: cmd. line:1: ^ syntax error
^C
Session terminated, killing shell... ...killed.
私はいつ間違ったのですか?
答え1
実行する必要があるコマンドが短くなるほどhdfs
。あなたのものは次のとおりです。
su -l hdfs -c "hadoop fs -du -s /home/test/*" | awk '{ sum += $1 } END { print sum }'
sudo
この目的に適しています。
sudo -u hdfs "hadoop fs -du -s /home/test/*" | awk '{ sum += $1 } END { print sum }'