我想从sas服务器中提取数据并将其放入hdfs中,我想使用java代码来实现同样的目的。
pxiryf3j1#
最简单的机制是安装hadoop客户端库,然后通过客户端命令将sas文件上载到hdfs: hadoop fs -put <filename> </hdfs/path/filename> 如果您不想使用客户机命令,您可以编写自己的java应用程序来执行从sas服务器到hdfs的上传。使用fs.filesystem.copyfromlocalfile接口传输文件的一段未经测试的示例代码:
hadoop fs -put <filename> </hdfs/path/filename>
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(); } } }
1条答案
按热度按时间pxiryf3j1#
最简单的机制是安装hadoop客户端库,然后通过客户端命令将sas文件上载到hdfs:
hadoop fs -put <filename> </hdfs/path/filename>
如果您不想使用客户机命令,您可以编写自己的java应用程序来执行从sas服务器到hdfs的上传。使用fs.filesystem.copyfromlocalfile接口传输文件的一段未经测试的示例代码: