使用Java API从虚拟机hdfs文件系统下载文件出现的问题

博客展示了一段Hadoop相关代码,用于从HDFS复制文件到本地。代码执行时出现java.io.IOException错误,给出的解决办法是下载hadoop.dll文件,拷贝到c:\\windows\\system32目录,然后重新运行代码。

代码如下:
package com.monkey1024;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;

public class GetFile {
public static void main(String[] args) throws IOException {
String hdfspath=“hdfs://192.168.59.1:9000/user/root/input/words.txt”;
String localpath=“E:/copy_words.txt”;
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(hdfspath), conf);
Path hdfs_path = new Path(hdfspath);
Path local_path = new Path(localpath);
fs.copyToLocalFile(hdfs_path,local_path);
fs.close();
}
}

执行后出现如下错误:
java.io.IOException: (null) entry in command string: null chmod 0644

解决方法:
1.下载hadoop.dll文件

2.并拷贝到c:\windows\system32目录中

3.重新运行代码程序即可

基于Java API进行HDFS编程时,可按以下步骤访问Linux文件系统: 1. **加载必要的JAR包**:在Java工程中加载包含访问HDFSJava API的JAR包,这些JAR包位于Linux系统的Hadoop安装目录下,如“/usr/local/hadoop/share/hadoop”目录。在开发界面中,点击“Libraries”选项卡,再点击右侧的“Add External JARs…”按钮来添加这些JAR包 [^5]。 2. **创建项目和类**:在hdfs项目的src->main->java路径下创建包,例如com.min.hadoop包,然后在该包下创建用于实现hdfs文件操作的类,如HdfsUtil.java、test.java [^3]。 3. **注意系统环境**:在win系统下若不配置hadoop环境,直接运行代码会报错,因为缺少winutils.exe和hadoop.dll两个文件,可从相关资源获取这两个文件 [^4]。 4. **代码实现操作**:利用Hadoop的Java库,采用编程的方式实现文件的上传、下载到本地、创建文件夹、删除文件和重命名文件等操作 [^3]。 5. **验证操作结果**:可在虚拟机上执行命令,如使用hdfs dfs -ls /”查看HDFS文件系统根目录,“hdfs dfs -cat /Tianxidev/test/1.txt”查看创建的文件内容,以此验证HDFSJava API工作是否正常 [^2]。 以下是一个简单的Java代码示例,用于在HDFS上创建文件夹: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; public class HdfsUtil { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); FileSystem fs = FileSystem.get(conf); Path dirPath = new Path("/testDir"); if (!fs.exists(dirPath)) { fs.mkdirs(dirPath); System.out.println("文件夹创建成功"); } fs.close(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值