java读取linux服务器下某文档的内容
1.java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现2.List集合按照由小到大排序或者由大到小排序3.java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法4.数据库 校验名称唯一性,用于新增和修改功能5.https页面加载http资源的解决方法6.正则表达式如何匹配中文7.SpringBoot项目的html页面使用axios进行get post请求8.后端MultipartFile接收文件转Base649.SpringCloudGateway网关服务实现文件上传功能10.使用java在未知表字段情况下通过sql查询信息11.java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)12.java小工具util系列1:日期和字符串转换工具13.java小工具util系列2:字符串工具14.简单粗暴的正则表达式笔记15.jar包目录介绍16.java中面向过程和面向对象区别?17.jdk8新特性-详情查看文档18.你对Collection中Set、List、Map理解?19.java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)20.java中“==”和equals,究竟比的是什么
21.java读取linux服务器下某文档的内容
22.java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下@
使用步骤:
共3步:
第一步:添加依赖
第二步:配置文件
第三步:代码调用
依赖
<!--java读spark-->
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build210</version>
</dependency>
<!--java读spark-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
配置文件
# bigdata
usr=root
pwd=geecentos
代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Vector;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SFTPv3Client;
import ch.ethz.ssh2.SFTPv3DirectoryEntry;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import com.geespace.microservices.calculate.execute.engine.bean.pojo.SparkRecord;
import com.geespace.microservices.calculate.execute.engine.dao.SparkRecordMapper;
import com.geespace.microservices.calculate.execute.engine.response.JobSubmitResponse;
import com.geespace.microservices.calculate.execute.engine.response.Msg;
import com.geespace.microservices.calculate.execute.engine.response.Response;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
/**
* login 注意:创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法
*
* @param submissionId
* submissionId
* @param ret
* ret
* @author liudz
* @date 2020/5/11
* @return 执行结果
**/
public String login(String submissionId, ResponseEntity<JobSubmitResponse> ret) {
String result = "";
String ip = ret.getBody().getWorkerHostPort().substring(0, ret.getBody().getWorkerHostPort().indexOf(":"));
Connection conn = null;
Session ss = null;
String directory = "/home/spark/work/" + submissionId;
try {
conn = new Connection(ip);
conn.connect();
boolean b = conn.authenticateWithPassword(usr, pwd);
if (!b) {
throw new IOException("Authentication failed.");
} else {
SFTPv3Client sft = new SFTPv3Client(conn);
Vector<?> v = sft.ls(directory);
for (int i = 0; i < v.size(); i++) {
SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();
s = (SFTPv3DirectoryEntry) v.get(i);
if ("stdout".equals(s.filename)) {
ss = conn.openSession();
ss.execCommand("cat ".concat("/home/spark/work/" + submissionId + "/" + s.filename));
InputStream is = new StreamGobbler(ss.getStdout());
BufferedReader bs = new BufferedReader(new InputStreamReader(is));
while (true) {
String line = bs.readLine();
if (line == null) {
break;
} else {
result += line + "\n";
}
}
bs.close();
}
}
ss.close();
conn.close();
}
} catch (IOException e) {
log.error("用户%s密码%s登录服务器%s失败!", usr, pwd, ip, "--ERROR--e:" + e.getMessage());
}
System.out.print(result);
return result;
}
JobSubmitResponse
package com.geespace.microservices.calculate.execute.engine.response;
import lombok.Data;
/**
* @author: liudz
* @date: 2020-04-27
*/
@Data
public class JobSubmitResponse {
/**
* 动作名称
*/
private String action;
/**
* 信息
*/
private String message;
/**
* spark版本
*/
private String serverSparkVersion;
/**
* 提交id
*/
private String submissionId;
/**
* 成功与否状态
*/
private String success;
/**
* driver状态
*/
private String driverState;
/**
* workerHostPort
*/
private String workerHostPort;
/**
* workerId
*/
private String workerId;
}
重要信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程