私はCDH 5.4.1クラスタによって提供されたhadoopを使用しています。 私が直面している問題は、path/tmp/dataを持つhdfs上のディレクトリがあることです。 abc.csvというファイルがあります。 この同じフォルダは、ノードの1つ(ノード1)のローカルlinux fsまた、csvファイルxyz.csvを含んでいます。ローカルノードにも同じパスが存在する場合、HDFSは混乱します
node1から次のコマンドを実行しているとき:hdfs dfs -ls /tmp/data/*.csv出力にabc.csvが表示されると予想していますが、 ls: `/ tmp/data /xyz.csv ':そのようなファイルやディレクトリはありません ローカルのLinux fsで同じフォルダパスを持っていない他のノードでも、同じコマンドを実行すると正しい出力が得られます。
私はhdfsコマンドを使用していたので、hadoopはdfsスペースだけを見てローカルLinuxのfsと混同しないようにしていましたが、間違っているようです。
この現象の背景には、何が原因である可能性があるかについての情報を提供してください。
おかげでクリスが。あなたのソリューションは私のためにうまく動作します。しかし、私はディレクトリがどのようにローカルLinuxのfs上で最初に作成されたかについてはっきりしていません。私がやっているのは、/ tmp/dataの場所にあるcsvファイルをhdfsにプッシュすることだけです。これは私が再現することができないいくつかの稀なシナリオで起こっています。この上のポインタは助けになるでしょう。 – Pushkin
ローカルファイルシステム上でパスが予期せず作成された場合、おそらく 'hdfs dfs'コマンドのいくつかが誤ってディレクトリを作成し、HDFSではなくローカルでファイルを作成しています。これは、コマンドに渡されたpath引数がファイルURI( 'file://'の接頭辞)である場合、または完全なHadoop設定(core-site.xmlおよびhdfs-site.xml)なしでコマンドが誤って実行された場合に発生します。効果。設定が見つからない場合、デフォルトの 'fs.defaultFS'はローカルファイルシステムです。 –