我想从 sas Server 中提取数据并将其放入 HDFS。我想使用 java 代码实现相同的任何想法。
最佳答案
最简单的机制是安装 Hadoop 客户端库,然后通过客户端命令将 SAS 文件上传到 HDFS:hadoop fs -put <filename> </hdfs/path/filename>
如果您不想使用客户端命令,您始终可以编写自己的 java 应用程序来执行从 SAS 服务器到 HDFS 的上传。一段未经测试的示例代码,使用 fs.FileSystem.copyFromLocalFile 接口(interface)传输文件:
package org.mycompany;
import java.security.PrivilegedExceptionAction;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
public class HDFSTransfer {
public static void main(String args[]) {
try {
UserGroupInformation ugi
= UserGroupInformation.createRemoteUser("myuser");
ugi.doAs(new PrivilegedExceptionAction<Void>() {
public Void run() throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://10.20.30.40:8020/user/myuser");
conf.set("hadoop.job.ugi", "myuser");
FileSystem fs = FileSystem.get(conf);
fs.copyFromLocalFile(new Path("/local/file/test"), new Path("/user/myuser/test"));
FileStatus[] status = fs.listStatus(new Path("/user/myuser"));
for(int i=0;i<status.length;i++){
System.out.println(status[i].getPath());
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
关于java - 如何使用 Java 将数据从 sas 服务器拉到 hdfs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359552/