简单的Http请求数据保存到Hdfs
使用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. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据
1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...
- mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中
使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...
- 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB
本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code ? 1 int retrieve(int scanno,void* buf); 在 ...
- Excel文件数据保存到SQL中
1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...
- 将爬取的数据保存到mysql中
为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...
- 1.scrapy爬取的数据保存到es中
先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index. from datetime import datetime fr ...
- 为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?
引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法. 学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的 ...
- Python scrapy爬虫数据保存到MySQL数据库
除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...
随机推荐
- FreeSWITCH网关参数之caller-id-in-from
1. 这个配置项两个设置值: true和false(默认) <param name="caller-id-in-from" value="true"/&g ...
- 【转载并整理】Linux - centOS 6 SVN服务器安装、配置及开机启动
以前在windows上安装svn服务器,用的是VisualSVN-Server用起来还不错,但只能用在windows,在linux上部署使用是 subversion,具体说明如下 参考原文:http: ...
- Python 图像下载解决图像损坏
在下载图片的过程中,经常会发现图片损坏,下面提供了两种解决方法: 方法一: if response.status_code == 200: print '======================= ...
- 跨系统-跨数据库访问表或创建映射视图-PB访问数据库的特殊处理
一. 在项目中可能会遇到在一个项目中会出现多个数据库的操作. 二. 也可能会多个系统多个数据库之间进行交互操作显示. 三. 经常需要两个数据库关联查询或需要翻译显示内容时会很麻烦. 四. 今天就有个简 ...
- git 权限问题:insufficient permission for adding an object to repository database .git
在git pull 的时候报错:insufficient permission for adding an object to repository database .git (去仓库里的objec ...
- logstash 如何处理 mongodb 导出来的 _id value数据。 how to custom fields of logstash by mongo mapreduce exported data.(example format: {_id:"xxx"} , value:{})
input { file { path => "c:\aa.json" start_position => "beginning" #sincedb ...
- php分享二十二:php面向对象
1:static访问符 在类中使用static有两种主要用途.定义静态成员和定义静态方法.静态成员只保留一个变量的值,这个值对所有实例都是有效的 类的方法是static的,他所访问的属性也必须是sta ...
- Android Eclipse Libs 的 jar 源码查看 (或者新版本ADT无法查看jar的源码)
问题背景:在使用比较新的ADT的时候,无法导入Jar中的源码包查看源码.只好自己打开压缩包,实在恼火.在半年前,只好这样. 问题解决方案:我就以 " android-support-v4.j ...
- 【Unity】第5章 3D坐标系和天空盒
分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 这一张主要介绍3D坐标系的基础知识以及各种形状的天空盒. 二.示例 本章的示例都在ch05Demos工程下.
- 我的IT之路2013(二)
严寒即将过去,温暖的春天正在向我们招手,欢呼吧,在迎接新的开始的同时,不要忘了回顾一下过去的这一年,总结一下过去的这一年有什么得失. 英语学习 13年下半年,最大的变化就是有很大一部分时间用来学英语. ...