使用okhttp工具集来开发:(如果文件已经存在会报错)

package com.etl;

import java.io.IOException;

import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response; public class LinkHttp { private static Configuration conf = null;
private static String fsName = "fs.defaultFS";
private static String fsURI = null; public static void main(String[] args) throws Exception { String name = args[0];
String uri = args[1];
String url = args[2];
String targetFile = args[3]; //文件全路径 //初始化
init(name, uri);
OkHttpClient client = new OkHttpClient();
final Request request = new Request.Builder().url(url).get().build();
Call call = client.newCall(request);
call.enqueue(new Callback() { @Override
public void onFailure(Call call, IOException e) {
System.out.println("Fail");
} @Override
public void onResponse(Call call, Response response) throws IOException {
FileSystem fs = null;
try {
Path dstPath = new Path(targetFile);
fs = FileSystem.get(conf);
FSDataOutputStream outputStream = fs.create(dstPath);
if(response.isSuccessful()) {
// System.out.println(response.body().string());
outputStream.write(response.body().bytes());
outputStream.close();
System.out.println("create file " + targetFile + " success!");
//fs.close();
}
}catch (Exception e){
e.printStackTrace();
}finally {
fs.close();
}
System.out.println("run writeHdfs end"); //关闭
if(response.body()!=null) {
response.body().close();
}
}
}); } private static void init(String name, String uri) {
if(StringUtils.isNotBlank(fsName)){
fsName = name;
}
fsURI = uri;
conf = new Configuration();
conf.set(fsName, fsURI);
} }

配置启动脚本如下:

#!/bin/sh
name=fs.defaultFS #固定不变
uri=dwpro-name1:8020 #hdfs文件系统地址
url=http://www.cnblogs.com/30go/ #待保存的http地址
targetPath=/tmp/test/king.txt # 目标的文件名
java -Djava.ext.dirs=lib com.etl.LinkHttp \
${name} ${uri} ${url} ${targetPath} >> test.log >& &

简单的Http请求数据保存到Hdfs的更多相关文章

  1. 1. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据

    1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...

  2. mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中

    使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...

  3. 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB

    本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...

  4. 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

    我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code   ? 1 int retrieve(int scanno,void* buf); 在 ...

  5. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...

  6. 将爬取的数据保存到mysql中

    为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...

  7. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  8. 为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?

    引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法. 学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的 ...

  9. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

随机推荐

  1. windows 自动移动maven jar包到jmeter 文件夹下面

    jmeter 自动移动maven jar包到jmeter 文件夹下面 bat 文件 rem 本文件放在jmeter 脚本maven项目根目录下面,和pom.xml在同一个文件夹下面 rem 预置条件, ...

  2. android check box 自定义图片

    http://blog.csdn.net/competerh_programing/article/details/7417074

  3. Word 2010之简单图文混排

    所谓图文混排,就是指将图片与文本内容进行一定规律的排列,以让文档更加漂亮. 下面的示范是一个简单的将两副照片混排到文字当中的(图片与文本内容无关,仅供演示). 1. 打开Word,输入文本内容: 2. ...

  4. sprintboot 发布

    http://blog.csdn.net/hguisu/article/details/51072683

  5. Mysql数据库If语句的使用

    MySQL的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 [sql] view plain copy 如果 expr1 是TRUE (expr1 & ...

  6. maven正式版本和快照版本的区别

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  7. sqlite: Error Code : 5 (SQLITE_BUSY) (database is locked (code 5): , while compiling: PRAGMA journal_mode)

    今天遇到了一个很奇怪的问题,登录完成后,程序会莫名crash, 报了下面的错误: sqlite: Error Code : (SQLITE_BUSY) (database is locked (cod ...

  8. 【小白的CFD之旅】24 稳态和瞬态

    小白最近在练习案例的时候,对稳态和瞬态的问题,产生了一些疑问.譬如说,为什么有的案例用稳态,而有的案例用瞬态?有时候相同的案例既可以用稳态也可以用瞬态,而有的案例却只能用瞬态计算?小白决定找小牛师兄问 ...

  9. pandas数组获取最大值索引的方法-argmax和idxmax

    pandas Series 的 argmax 方法和 idxmax 方法用于获取 Series 的最大值的索引值: 举个栗子: 有一个pandas Series,它的索引是国家名,数据是就业率,要找出 ...

  10. 聊聊javascript的null和undefined

    只要是说到js的变量和数据类型,就脱不开null和undefined,这兄弟俩就是js的重要基础,不可不察,无数的同学们都用过放大镜多角度多批次地研究过这兄弟俩,真是深受欢迎.^-^ js也真是怪异, ...