Este artigo estuda principalmente o método de acesso da API Java do HDFS. O código específico é mostrado abaixo e tem comentários detalhados.
O ritmo tem sido um pouco rápido recentemente. Quando você tiver tempo, você pode encerrar isso
importar java.io.ioException; importar java.net.uri; importar java.net.urisyntaxception; importar org.apache.hadoop.conf.configuration; importar org.apache.hadoop.fs.blocklocation; import.apache.hadoop.fs.filestatus; importação; importação; importação; org.apache.hadoop.fs.filesystem; importar org.apache.hadoop.fs.fileutil; importar org.apache.hadoop.fs.path; importar org.apache.hadoop.hdfs.distribedfilesystem; import.apache.hadoop.hdfs.protocol.datemster;
/** * Obtenha sistema de arquivo HDFS * @return * @THOWSoxception * @throws urisyntaxException */public static arquivos sistemas getFilesystem () lança ioexception, urisyntaxException {// leia config fileConfiguration by thefiguration (); // retorno para o sistema de default system System // FileSystem fs = filesystem.get (conf); // Endereço do sistema de arquivos especificado URI URI = novo URI ("hdfs: // hy: 9000"); // retorna o sistema de arquivos especificado // se você estiver testando localmente, você precisa usar esse método para obter o arquivo de arquivos de arquivos de arquivos; estático void mkdir () lança Exceção {// Obtenha o sistema de arquivos do sistema de arquivos fs = getFilesystem (); // Crie diretório de arquivos fs.mkdirs (new Path ("hdfs: // hy: 9000/hy/weibo")); // Libere o recurso F.Close ();}/*** DELETE FILHE "); Exceção {// Obtenha o sistema de arquivos do sistema de arquivos fs = getFilesystem (); // excluir o diretório de arquivos ou o diretório de arquivos fs.delete (novo caminho ("hdfs: // hy: 9000/hy/weibo"), true); // libere o recurso FSS.Close ();}/***, obtenha todos os arquivos no diretório* @ FileSystem fs = getFilesystem (); // Liste o conteúdo do diretório FileStatus [] status = fs.listStatus (novo caminho ("hdfs: // hy: 9000/hy/")); // obtém todos os caminhos de arquivo no caminho do diretório [] listeds = fileUtil.StyThss (status); {System.out.println (path);} // Libere o recurso fs.close ();}/** * Carregue o arquivo para hdfs * @throws exceção */public static void copyTohdfs () lança a exceção {// obtenha o arquivo de arquivo fs Path ("/home/hadoop/temp.jar"); // se você precisar testar no Windows, precisará alterá -lo para o caminho no Windows, por exemplo, e: //temp.jarpath srcpath = new Path ("e: //temp.jar"); // caminho de destino dstPath = newiB ("hdfs: // hy: hy: hy: hy: hy: //temp.jar"); fs.copyfromlocalfile (srcpath, dstpath); // libere o recurso fs.close ();}/*** download do arquivo de hdfs* @throws excepção*/public static void getFile () lança a exceção {// obtendo o arquivo de arquivos system fs = getfilesystemstem () //) // // fontes de caminhos {// obtendo o arquivo system fs = getFilesystem (); Path ("hdfs: // hy: 9000/hy/weibo/temp.jar"); // caminho padrão, o padrão é linux // se testado no Windows, você precisa alterar para o caminho em Windows, como c: // user/andy/desktop/path dstpath = new Path ("d: //"); // download do arquivo/FILHOTT/FILHOTT) Resource fs.Close ();}/*** Obtenha informações sobre pontos de cluster HDFS* @THOWS Exceção*/public static void gethdfsnodes () lança exceção {// obtendo o sistema de arquivos de arquivos fs/getfilesystem (); // obtendo distribuído sistema de arquivos distribuídofilestystems = distribuedfiles (); datanodestats = hdfs.getdatanodestats (); // travessal de loop para (int i = 0; i <dataNodestats.length; i ++) {System.out.println ("Datanote_" + i + "_name:" + datanodestats [i] .gethostName (); A localização de um arquivo no cluster HDFS * @Throws Exception */public static void getFilelocal () lança exceção {// Obtenha o sistema de arquivos do sistema de arquivos fs = getFilesystem (); // caminho do caminho do caminho do caminho = new Path ("hdfs: // hy: 9000/hy/whibo/temp.jar"; fs.getFileStatus (caminho); // Obtenha a lista de localização do bloco de arquivos BlockLocation [] blockLocações = fs.getFileBlockLocações (FileStatus, 0, FileStatus.getLen ()); // loop de saída Informações para (int i = 0; i <blocklocations.lowngth; Blocklocações [i] .gethosts (); System.out.println ("block_" + i + "_location:" + hosts [0]);} // Libere o recurso fs.close ();}O exposto acima é o conteúdo inteiro deste artigo sobre o método de acesso da API HDFS Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!