如何使用java将数据从sas服务器拉到hdfs?

jutyujz0  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(330)

我想从sas服务器中提取数据并将其放入hdfs中,我想使用java代码来实现同样的目的。

pxiryf3j

pxiryf3j1#

最简单的机制是安装hadoop客户端库,然后通过客户端命令将sas文件上载到hdfs: hadoop fs -put <filename> </hdfs/path/filename> 如果您不想使用客户机命令,您可以编写自己的java应用程序来执行从sas服务器到hdfs的上传。使用fs.filesystem.copyfromlocalfile接口传输文件的一段未经测试的示例代码:

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();
        }
    }
}

相关问题