简单的Http请求数据保存到Hdfs
2023-09-14 08:57:20 时间
使用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 2>&1 &
相关文章
- 利用bootstraptable展示数据,对数据进行排序分页等操作
- 对数据仓库进行数据建模
- 手把手教你-----巧用Excel批量生成SQL语句,处理大量数据
- 大数据基础之HDFS
- 大数据基础之Hadoop(4)hdfs回收站
- 大数据基础之Hadoop(2)hdfs和yarn最简绿色部署
- 人人都谈大数据,你考虑过小数据的感受吗
- 汽车行业如何利用大数据
- 第1章 1.4计算机网络概述--数据包和数据帧
- json数据爬虫。requests实现
- hdfs写数据流程分析
- 解决HDFS NameNode启动时Loading edits时间超长的问题(NameNode数据同步机制介绍)
- 图解Hadoop hdfs写数据流程
- Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作1 2. Hdfs 类似nfs ftp远程分布式文件服务2 3. 启动hdfs服务start
- python带你采集汽车数据,以后买车就有参考了~
- ResNet实战:tensorflow2.X版本,ResNet50图像分类任务(小数据集)
- 3-39客户端(client)写数据到HDFS的流程
- 【甘道夫】Sqoop1.99.3基础操作--导入Oracle的数据到HDFS
- springMVC框架下JQuery传递并解析Json数据
- 第12讲:DQL数据查询语句综合案例实战
- python 批量打开数据
- hive和hbase本质区别——hbase本质是OLTP的nosql DB,而hive是OLAP 底层是hdfs,需从已有数据库同步数据到hdfs;hive可以用hbase中的数据,通过hive表映射到hbase表
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化
- 大数据Hadoop之——数据采集存储到HDFS实战(Python版本)
- DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程