Как вытащить данные с сервера sas в hdfs, используя Java?

1

Я предполагаю вытащить данные с сервера sas и поместить его в HDFS. Я хочу использовать java-код для одной и той же идеи, пожалуйста.

Теги:
sas
hadoop
bigdata

1 ответ

0

Самый простой механизм - установить клиентские библиотеки 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();
        }
    }
}
  • 0
    Спасибо, Джем, за ваш ответ. В этом коде вы копируете файлы с локального компьютера, если я не ошибаюсь. Так что, я думаю, по вашему мнению сначала получите данные с sas-сервера на локальный сервер, а затем перейдите к этому коду? неправильно.....
  • 0
    Это правильно ... Исходя из вопроса, я подумал, что вы хотите перенести данные SAS с сервера SAS в среду Hadoop с помощью Java-программы. Еще один способ сделать это - открыть наборы данных в SAS, и с помощью коннектора SAD Hadoop (который подключается к Hiveserver2) вы можете загрузить данные в таблицы кустов на Hadoop.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню