วิธีคัดลอกไฟล์จาก HDFS ไปยังระบบไฟล์ภายในเครื่อง ไม่มีตำแหน่งทางกายภาพของไฟล์ภายใต้ไฟล์ไม่มีแม้แต่ไดเร็กทอรี ฉันจะย้ายพวกเขาไปยังพื้นที่ของฉันเพื่อตรวจสอบความถูกต้องเพิ่มเติมได้อย่างไรฉันกำลังพยายามผ่าน winscp
วิธีคัดลอกไฟล์จาก HDFS ไปยังระบบไฟล์ภายในเครื่อง ไม่มีตำแหน่งทางกายภาพของไฟล์ภายใต้ไฟล์ไม่มีแม้แต่ไดเร็กทอรี ฉันจะย้ายพวกเขาไปยังพื้นที่ของฉันเพื่อตรวจสอบความถูกต้องเพิ่มเติมได้อย่างไรฉันกำลังพยายามผ่าน winscp
คำตอบ:
bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
namenode_machine:50070
) เรียกดูไฟล์ที่คุณตั้งใจจะคัดลอกเลื่อนลงหน้าและคลิกที่ดาวน์โหลดไฟล์ใน Hadoop 2.0
hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>
ที่ไหน
hdfs_input_file_path
อาจได้รับจาก http://<<name_node_ip>>:50070/explorer.html
output_path
คือโลคัลพา ธ ของไฟล์ซึ่งไฟล์จะถูกคัดลอกไป
คุณยังอาจจะใช้ในสถานที่ของget
copyToLocal
ในการคัดลอกไฟล์จาก HDFS ไปยังระบบไฟล์โลคัลสามารถรันคำสั่งต่อไปนี้:
hadoop dfs -copyToLocal <input> <output>
<input>
: พา ธ ไดเร็กทอรี HDFS (เช่น / mydata) ที่คุณต้องการคัดลอก<output>
: เส้นทางไดเร็กทอรีปลายทาง (เช่น ~ / Documents)hadoop fs -ls
?
คุณสามารถทำได้ทั้งสองวิธีนี้
1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>
เช่น:
ไฟล์ของฉันอยู่ใน/sourcedata/mydata.txt ฉันต้องการคัดลอกไฟล์ไปยังระบบไฟล์ Local ในพา ธ นี้/ user / ravi / mydata
hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/
หาก "ไฟล์" ต้นทางของคุณถูกแยกออกเป็นหลายไฟล์ (อาจเป็นผลมาจากการลดแผนที่) ที่อยู่ในแผนผังไดเรกทอรีเดียวกันคุณสามารถคัดลอกไฟล์นั้นไปยังไฟล์ในเครื่องโดยใช้:
hadoop fs -getmerge /hdfs/source/dir_root/ local/destination
สิ่งนี้ใช้ได้ผลกับฉันในอินสแตนซ์ VM ของ Ubuntu
hdfs dfs -copyToLocal [ไดเร็กทอรี hadoop] [ไดเร็กทอรีโลคัล]
หากคุณใช้นักเทียบท่าคุณต้องทำตามขั้นตอนต่อไปนี้:
คัดลอกไฟล์จาก hdfs ไปยัง namenode (hadoop fs -get output / part-r-00000 / out_text) "/ out_text" จะถูกเก็บไว้ที่ Namenode
คัดลอกไฟล์จาก namenode ไปยังโลคัลดิสก์โดย (docker cp namenode: / out_text output.txt)
output.txt จะอยู่ในไดเร็กทอรีการทำงานปัจจุบันของคุณ
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path