首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用webHdfs创建文件

使用webHdfs创建文件
EN

Stack Overflow用户
提问于 2020-07-22 03:36:41
回答 1查看 135关注 0票数 0

我想用webhdfs创建一个文件到hdfs,我写了下面的函数

代码语言:javascript
复制
public ResponseEntity createFile(MultipartFile f) throws URISyntaxException {
        URI uriPut = new URI(
                webhdfsBaseurl+
                "/gateway/default/webhdfs/v1/__MY_PATH/"+f.getName()+ 
                "?op=CREATE" + "&overwrite=true&data=true");
        ResponseEntity e = restTemplate.exchange(uriPut, HttpMethod.PUT,
                new HttpEntity<Resource>(f.getResource()), Map.class);
        URI location = e.getHeaders().getLocation();
        System.out.println(location.toString());

        URI uriPutFnal = new URI(
                location+
                "?op=CREATE" + "&overwrite=true&data=true");
        ResponseEntity eFnal = restTemplate.exchange(uriPutFnal, HttpMethod.PUT,
                new HttpEntity<Resource>(f.getResource()), Map.class);
        
        URI uri = new URI(webhdfsBaseurl+
                "/gateway/default/webhdfs/v1/_PATH_"+"?op=LISTSTATUS");
        String test = restTemplate.getForObject(uri, String.class);
        System.out.println(test);
        
        return eFnal;
    }

在最后一张照片里,我没有看到我的文件...有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 20:42:31

代码语言:javascript
复制
public ResponseEntity createFile(MultipartFile f) throws URISyntaxException, RestClientException, IOException {
    URI uriPut = new URI(webhdfsBaseurl + "/gateway/default/webhdfs/v1/dev/ep/flux_entrant/pg6/"
            + f.getOriginalFilename() + "?op=CREATE" + "&overwrite=true&data=true");

    ResponseEntity e = restTemplate.exchange(uriPut, HttpMethod.PUT, null, Map.class);

    if (e.getStatusCode().is3xxRedirection()) {
        URI location = e.getHeaders().getLocation();
        System.out.println(location.toString());
        URI uriPutFnal = new URI(location + "?op=CREATE" + "&overwrite=true&data=true");
        ResponseEntity eFnal = restTemplate.exchange(uriPutFnal, HttpMethod.PUT,
                new HttpEntity<Resource>(f.getResource()), Map.class);

        if (eFnal.getStatusCode().is2xxSuccessful()) {
            URI uri = new URI(
                    webhdfsBaseurl + "/gateway/default/webhdfs/v1/dev/ep/flux_entrant/pg6" + "?op=LISTSTATUS");
            String test = restTemplate.getForObject(uri, String.class);
            System.out.println(test);

            return eFnal;
        }
    }

    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63021886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档