HDFS编程 - 使用HDFS Java API进行文件操作

news/2025/1/12 21:33:26/

文章目录

  • 前言
  • 一、创建hdfs-demo项目
    • 1. 在idea上创建maven项目
    • 2. 导入hadoop相关依赖
  • 二、常用 HDFS Java API
    • 1. 简介
    • 2. 获取文件系统实例
    • 3. 创建目录
    • 4. 创建文件
      • 4.1 创建文件并写入数据
      • 4.2 创建新空白文件
    • 5. 查看文件内容
    • 6. 查看目录下的文件或目录信息
      • 6.1 查看指定目录下的文件或目录信息
      • 6.2 递归查看指定目录下的所有文件信息
      • 6.3 查看指定路径信息
    • 7. 文件上传
    • 8. 向文件追加内容
    • 9. 文件下载
    • 10. 移动或重命名
    • 11. 复制或重命名文件
    • 12. 删除文件或目录
      • 12.1 删除文件
      • 12.1 删除目录
    • 13. 检查路径是否存在


前言

本文将详细介绍如何使用Java编程语言与HDFS进行交互。我们将通过创建一个简单的Maven项目,逐步演示HDFS的常用Java API,包括创建目录、上传和下载文件、查看文件内容、删除文件等操作。通过这些示例,读者将能够掌握基本的HDFS操作,并为后续的大数据处理打下坚实的基础。


hdfsdemo_8">一、创建hdfs-demo项目

1. 在idea上创建maven项目

打开idea新建项目,如下图。

在这里插入图片描述

选择Java项目,输入项目名称,选择构建系统为Maven,选择JDK为1.8,然后点击创建。

在这里插入图片描述

hadoop_18">2. 导入hadoop相关依赖

如下图所示,在pom.xml文件中添加Hadoop相关依赖。

在这里插入图片描述


二、常用 HDFS Java API

1. 简介

Hadoop分布式文件系统(HDFS)是Apache Hadoop的核心组件之一,设计用于存储大量的数据,并提供高吞吐量的数据访问。HDFS Java API为开发者提供了直接与HDFS交互的能力,允许执行诸如创建目录、上传和下载文件、读取和写入文件等操作。

2. 获取文件系统实例

编写一个getFs方法,用于返回一个文件系统实例。

java">public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");
}

在这里插入图片描述

3. 创建目录

可以使用mkdirs()方法来创建新的目录。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建目录/test/demoboolean mkdirs = fs.mkdirs(new Path("/test/demo"));if (mkdirs) {System.out.println("===============创建目录成功===============");} else {System.out.println("===============创建目录失败===============");}// 创建目录/test/demo2,并设置权限为777boolean mkdirs2 = fs.mkdirs(new Path("/test/demo2"), new FsPermission("777"));if (mkdirs2) {System.out.println("===============创建目录并设置权限成功===============");} else {System.out.println("===============创建目录并设置权限失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

4. 创建文件

4.1 创建文件并写入数据

可以使用create()方法来创建文件并写入数据。

java">package org.example;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 java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建文件/test/demo/text.txt,并向文件中写入数据FSDataOutputStream fsDataOutputStream = fs.create(new Path("/test/demo/text.txt"));String dataStr = "这是写入文件/test/demo/text.txt的示例数据\n";fsDataOutputStream.write(dataStr.getBytes());System.out.println("===============创建文件并写入数据成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

4.2 创建新空白文件

可以使用createNewFile()方法来创建新空白文件。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建新空白文件/test/demo/text01.txtboolean newFile = fs.createNewFile(new Path("/test/demo/text01.txt"));if (newFile) {System.out.println("===============创建新空白文件成功===============");} else {System.out.println("===============创建新空白文件失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

5. 查看文件内容

可以使用open()方法来打开文件并读取文件内容。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 打开文件/test/demo/text.txt,并读取文件内容FSDataInputStream open = fs.open(new Path("/test/demo/text.txt"));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open));System.out.println("===============文件内容如下:===============");String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6. 查看目录下的文件或目录信息

6.1 查看指定目录下的文件或目录信息

可以使用listStatus()方法来查看目录下的文件或目录信息。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 查看目录/test下的文件或目录信息FileStatus[] fileStatuses = fs.listStatus(new Path("/test"));for (FileStatus fileStatus : fileStatuses) {System.out.println("===============文件或目录信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6.2 递归查看指定目录下的所有文件信息

可以使用listFiles()方法来递归查看指定目录下的所有文件信息。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 递归查看目录/test下的所有文件信息RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/test"), true);while (listFiles.hasNext()) {FileStatus fileStatus = listFiles.next();System.out.println("===============文件或目录信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6.3 查看指定路径信息

可以使用getFileStatus()方法来查看指定路径信息。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 查看目录/test的信息FileStatus fileStatus = fs.getFileStatus(new Path("/test"));System.out.println("===============路径信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

7. 文件上传

可以使用copyFromLocalFile()方法从本地上传文件到hdfs

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把本地文件D:\shiyan.csv上传到hdfs的/test/demo目录,上传后不删除本地文件D:\shiyan.csvfs.copyFromLocalFile(new Path("D:\\shiyan.csv"), new Path("/test/demo"));// 把本地文件D:\shiyan.csv上传到hdfs的/test/demo目录,上传后不删除本地文件D:\shiyan.csv,且如果hdfs上存在相同的文件则覆盖// fs.copyFromLocalFile(false, true, new Path("D:\\shiyan.csv"), new Path("/test/demo"));System.out.println("===============文件上传成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

8. 向文件追加内容

可以使用append()方法追加内容到hdfs上的指定文件。

java">package org.example;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 java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 向hdfs上文件/test/demo/text01.txt写入数据FSDataOutputStream fsDataOutputStream = fs.append(new Path("/test/demo/text01.txt"));// 把9,7,6,7,9写入文件/test/demo/text01.txt并换行fsDataOutputStream.write("9,7,6,7,9\n".getBytes());// 把缓冲区数据刷入文件fsDataOutputStream.flush();// 关闭资源fsDataOutputStream.close();System.out.println("===============追加数据到文件成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

9. 文件下载

可以使用copyToLocalFile()方法从hdfs下载文件到本地。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text01.txt下载到本地D:\目录fs.copyToLocalFile(new Path("/test/demo/text01.txt"), new Path("D:\\"));System.out.println("===============文件下载成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

10. 移动或重命名

可以使用rename()方法来移动或重命名文件。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text.txt重命名为/test/demo/text02.txtboolean rename = fs.rename(new Path("/test/demo/text.txt"), new Path("/test/demo/text02.txt"));if (rename) {System.out.println("===============文件重命名成功===============");} else {System.out.println("===============文件重命名失败===============");}// 把hdfs上文件/test/demo/text01.txt移动到/test/demo2目录boolean rename2 = fs.rename(new Path("/test/demo/text02.txt"), new Path("/test/demo2"));if (rename2) {System.out.println("===============文件移动成功===============");} else {System.out.println("===============文件移动失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

11. 复制或重命名文件

可以使用FileUtil.copy()方法来复制或重命名文件。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text01.txt复制到/test/demo2目录boolean copy = FileUtil.copy(fs, new Path("/test/demo/text01.txt"), fs, new Path("/test/demo2"), false, true, fs.getConf());if (copy) {System.out.println("===============复制文件成功===============");} else {System.out.println("===============复制文件失败===============");}// 把hdfs上文件/test/demo/text01.txt复制并重命名为/test/demo2/text03.txtboolean copy2 = FileUtil.copy(fs, new Path("/test/demo/text01.txt"), fs, new Path("/test/demo2/text03.txt"), false, true, fs.getConf());if (copy2) {System.out.println("===============复制文件并重命名成功===============");} else {System.out.println("===============复制文件并重命名失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

12. 删除文件或目录

12.1 删除文件

可以使用delete()方法来删除文件。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 删除hdfs上文件/test/demo2/text03.txtboolean delete = fs.delete(new Path("/test/demo2/text03.txt"), false);if (delete) {System.out.println("===============删除文件成功===============");} else {System.out.println("===============删除文件失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

12.1 删除目录

可以使用delete()方法来删除目录。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 递归删除hdfs上目录/test/demo2boolean delete = fs.delete(new Path("/test/demo2"), true);if (delete) {System.out.println("===============删除目录成功===============");} else {System.out.println("===============删除目录失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

13. 检查路径是否存在

可以使用exists()方法来检查路径是否存在。

java">package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 检查路径/test/demo是否存在boolean exists = fs.exists(new Path("/test/demo"));if (exists) {System.out.println("===============路径存在===============");} else {System.out.println("===============路径不存在===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

http://www.ppmy.cn/news/1562603.html

相关文章

YOLOv10-1.1部分代码阅读笔记-ops.py

ops.py ultralytics\utils\ops.py 目录 ops.py 1.所需的库和模块 2.class Profile(contextlib.ContextDecorator): 3.def segment2box(segment, width640, height640): 4.def scale_boxes(img1_shape, boxes, img0_shape, ratio_padNone, paddingTrue, xywhFalse): …

SpringBoot操作spark处理hdfs文件

SpringBoot操作spark处理hdfs文件 1、导入依赖 <!-- spark依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.2</version></dependency><depend…

《PC 上的开源神经网络多模态模型:开启智能交互新时代》

《PC 上的开源神经网络多模态模型&#xff1a;开启智能交互新时代》 一、引言二、多模态模型基础剖析&#xff08;一&#xff09;核心概念解读&#xff08;二&#xff09;技术架构探秘 三、开源多模态模型的独特魅力&#xff08;一&#xff09;开源优势尽显&#xff08;二&…

【面试题】简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势

云原生&#xff08;Cloud Native&#xff09; 定义&#xff1a;云原生是一种构建和运行应用程序的方法&#xff0c;旨在充分利用云计算的优势。它涵盖了一系列技术和理念&#xff0c;包括容器化、微服务架构、自动化部署与管理等。特点&#xff1a;云原生应用程序被设计为可弹性…

C++:字符数组

一、字符数组介绍 数组的元素如果是字符类型&#xff0c;这种数组就是字符数组&#xff0c;字符数组可以是一维数组&#xff0c;可以是二维数组 &#xff08;多维数组&#xff09;。我们接下来主要讨论的是一维的字符数组。 char arr1[5]; //⼀维字符数组 char arr2[3][5];//⼆…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)

流域综合处理 流域综合治理是根据流域自然和社会经济状况及区域国民经济发展的要求,以流域水流失治理为中心,以提高生态经济效益和社会经济持续发展为目标,以基本农田优化结构和高效利用及植被建设为重点,建立具有水土保持兼高效生态经济功能的半山区流域综合治理模式。数字高程…

Python AI教程之十五:监督学习之决策树(6)高级算法C5.0决策树算法介绍

C5.0决策树算法 C5 算法由 J. Ross Quinlan 创建,是 ID3 决策树方法的扩展。它通过根据信息增益(衡量通过按特定属性进行划分而实现的熵减少量)递归地划分数据来构建决策树。 对于分类问题,C5.0 方法是一种决策树算法。它构建规则集或决策树,这是对 C4.5 方法的改进。根…

【Linux】Linux开发:GDB调试器与Git版本控制工具指南

Linux相关知识点可以通过点击以下链接进行学习一起加油&#xff01;初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建 在 Linux 开发中&#xff0c;GDB 调试器和 Git 版本控制工具是开发者必备的利器。GDB 帮助快速定位代码问题&#xff0c;G…