Я предполагаю вытащить данные с сервера sas и поместить его в HDFS. Я хочу использовать java-код для одной и той же идеи, пожалуйста.
Самый простой механизм - установить клиентские библиотеки 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();
}
}
}