当前位置: 首页 > news >正文

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用

  • 一.Hive 简介
  • 二.Hive 搭建
    • 1.下载
    • 2.安装
      • 1.解压并配置 HIVE
      • 2.修改 hive-site.xml
      • 3.修改 hadoop 的 core-site.xml
      • 4.启动
  • 三.Hive 测试
    • 1.基础测试
    • 2.建库建表
    • 3.Java 连接测试
      • 1.Pom依赖
      • 2.Yarm 配置文件
      • 3.启动类
      • 4.配置类
      • 5.测试类

一.Hive 简介

Hive 是基于 Hadoop 的数据仓库工具,可以提供类 SQL 查询能力

二.Hive 搭建

1.下载

Hive 官网

Hive 下载地址(自选版本)

在这里插入图片描述

MySQL Java 驱动下载

在这里插入图片描述

2.安装

1.解压并配置 HIVE

## 1.创建安装目录
mkdir -p /usr/local/hive
## 2.将压缩包拷贝到服务器并解压
tar zxvf apache-hive-4.0.0-alpha-2-bin.tar.gz -C /usr/local/hive/
## 3.添加环境变量并刷新
echo 'export HIVE_HOME=/usr/local/hive/apache-hive-4.0.0-alpha-2-bin' >> /etc/profile
echo 'export PATH=${HIVE_HOME}/bin:${PATH}' >> /etc/profile
source /etc/profile
## 4.进入安装目录
cd $HIVE_HOME/conf
## 5.复制 hive-env.sh.template 并修改配置
cp hive-env.sh.template hive-env.sh
echo 'export JAVA_HOME=/usr/local/java/jdk-11.0.19' >> hive-env.sh
echo 'export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.6' >> hive-env.sh
echo 'export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop' >> hive-env.sh
echo 'export HIVE_HOME=/usr/local/hive/apache-hive-4.0.0-alpha-2-bin' >> hive-env.sh
echo 'export HIVE_CONF_DIR=${HIVE_HOME}/conf' >> hive-env.sh
echo 'export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib' >> hive-env.sh
## 6.复制 mysql-connector-j-8.0.33.jar 到 ${HIVE_HOME}/lib
tar zxvf mysql-connector-j-8.0.33.tar.gz
cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ${HIVE_HOME}/lib/
## 7.复制 cp hive-default.xml.template 并修改配置
cp hive-default.xml.template hive-site.xml

2.修改 hive-site.xml

使用 MobaXterm 连接虚拟机,并用文本编辑工具打开 hive-site.xml 修改:

在这里插入图片描述

注释掉同名的默认配置,或参考下面信息,直接修改默认配置值
同时全局替换下面两个变量值,避免 hiveserver2 启动报错
1.${system:java.io.tmpdir} => /tmp (Linux 系统默认的临时目录)
2.${system:user.name}      => root (本系统当前操作用户名)
3.hive.server2.thrift.client.user 配置用户 root , 同时需要修改 hadoop 的 core-site.xml 为 root  配置代理信息
4.hadoop 集群搭建参考前面文章
<!--配置 Hive Metastore 此处使用 mysql & 转义 &amp;--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.1.201:3306/hive?characterEncoding=UTF8&amp;createDatabaseIfNotExist=true&amp;serverTimezone=GMT%2B8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>admin</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>12345678</value></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property><!-- nn 配置主机地址/用户/密码 --><property><name>hive.server2.thrift.bind.host</name><value>nn</value></property><property><name>hive.server2.thrift.client.user</name><value>root</value><description>Username to use against thrift client. default is 'anonymous'</description></property><property><name>hive.server2.thrift.client.password</name><value>123456</value><description>Password to use against thrift client. default is 'anonymous'</description></property> <property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><property><name>hive.server2.active.passive.ha.enable</name><value>true</value></property><property><name>hive.metastore.warehouse.dir</name><value>hdfs://nn:9000/user/hive/warehouse</value><description>hdfs 地址</description></property><property><name>hive.metastore.schema.verification</name><value>true</value></property><property><name>hive.metastore.uris</name><value>thrift://nn:9083</value></property>

初始化元数据

在这里插入图片描述

查看库 Hive

在这里插入图片描述

3.修改 hadoop 的 core-site.xml

## 1.进入配置目录
cd $HADOOP_HOME//etc/hadoop
## 2.修改 core-site.xml
vim core-site.xml
## 3.增加以下内容<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

在这里插入图片描述

4.启动

## 1.初始化
schematool -initSchema -dbType mysql
## 2.启动 hadoop 集群
cd $HADOOP_HOME/sbin && start-all.sh
## 3.启动 hive
mkdir -p /var/log/hive
cd ${HIVE_HOME}/bin
nohup hive --service metastore 2>&1 >> /var/log/hive/metastore.log &
nohup hive --service hiveserver2 2>&1 >> /var/log/hive/hiveserver2.log &## 4.杀死 hive 进程
kill -9 `ps aux | grep hiveserver2 | grep -v grep | awk '{print $2}'`
kill -9 `ps aux | grep metastore | grep -v grep | awk '{print $2}'`
查看 Java 进程:jps

在这里插入图片描述

查看端口占用:lsof -i -P -n | grep LISTEN

在这里插入图片描述

查看默认日志:tail -200f /tmp/root/hive.log

在这里插入图片描述

日志发现一个报错:java.sql.SQLException: Referencing column 'ACTIVE_EXECUTION_ID' and referenced column 'SCHEDULED_EXECUTION_ID' in foreign key constraint 'SCHEDULED_EXECUTIONS_SCHQ_ACTIVE' are incompatible.
因为 MySQL 版本为 8.0.33,可能导致了主外键字段类型不一致时的异常
对应初始化后的表和字段分别为:
SCHEDULED_EXECUTIONS - SCHEDULED_EXECUTION_ID
SCHEDULED_QUERIES    - ACTIVE_EXECUTION_ID
原来这两个字段一个为 int ,一个为 bigint 统一为 bigint 后就不报错了

三.Hive 测试

1.基础测试

## 1.控制台连接
hive
## 2.连接并输入用户名、密码
!connect jdbc:hive2://nn:10000
## 3.查看库
show databases;
## 4.退出
!quit

在这里插入图片描述

UI 访问:http://192.168.1.6:10002/

在这里插入图片描述

hdfs 查看: http://192.168.1.6:9870/explorer.html#/tmp/hive/root

在这里插入图片描述

2.建库建表

## 1.建库并设置存储位置
create database if not exists animal_db
comment "This is animal database"
location '/hive_database/animal_db';
## 2.查看库
show databases;
## 3.切换库
use animal_db;
## 4.创建表
create table if not exists dog_tb(name string,breed string,area string,feature string)
row format delimited fields terminated by ';';
## 5.从本地文件加载数据
load data local inpath '/home/dog_tb.txt' into table dog_tb;
## 6.查看数据
select * from dog_tb;
## 7.删除表
drop table dog_tb;
## 7.强制删库
drop database animal_db cascade ;

在这里插入图片描述

在这里插入图片描述

dog_tb.txt 
bomei;small;germany;white,small
bianmu;big;scotland;clever
tugou;all;china;clever,loyalty

3.Java 连接测试

1.Pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>hive-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><spring.version>2.7.8</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.32</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>4.0.0-alpha-2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.6</version></dependency></dependencies></project>

2.Yarm 配置文件

config:hivedriverClassName: org.apache.hive.jdbc.HiveDriverhiveurl: jdbc:hive2://192.168.1.6:10000/animal_dbhiveusername: roothivepassword: 123456

3.启动类

package org.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author Administrator*/
@SpringBootApplication
public class HiveApp {public static void main(String[] args) {//启动触发SpringApplication.run(HiveApp.class,args);}
}

4.配置类

package org.example.config;import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;/*** @author Administrator* @Description* @create 2023-08-02 21:42*/
@Component
public class HiveConfig {@Bean("hiveProperties")@ConfigurationProperties(prefix = "config")public Properties getConfig(){return new Properties();}@Beanpublic Connection start(@Qualifier("hiveProperties") Properties properties){try {String url = (String) properties.get("hiveurl");String user = (String) properties.get("hiveusername");String password = (String) properties.get("hivepassword");Connection conn = DriverManager.getConnection(url,user,password);conn.setAutoCommit(true);return conn;} catch (Exception e) {System.out.println(e);}return null;}
}

5.测试类

package org.example.controller;import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.hive.jdbc.HivePreparedStatement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** @author Administrator* @Description* @create 2023-08-02 21:42*/
@Slf4j
@RestController
@RequestMapping("/hive")
public class HiveController {/*** 注入连接类*/@AutowiredConnection conn;/*** 列*/List<String> columns = Arrays.asList("name","breed","area","feature");/*** 插入* @throws SQLException*/@GetMapping("/insert")public void insert() throws SQLException {String sql = "insert into dog_tb values (?,?,?,?)";HivePreparedStatement pStSm= (HivePreparedStatement) conn.prepareStatement(sql);pStSm.setString(1, "keji");pStSm.setString(2, "small");pStSm.setString(3, "welsh");pStSm.setString(4, "friendly");pStSm.executeUpdate();}/*** 查询* @return* @throws SQLException*/@GetMapping("/query")public List<String> query(int index,String value) throws SQLException {List<String> list = new ArrayList<>();String sql = "select * from dog_tb";if (index > 0 && StringUtils.isNotEmpty(value)){sql = "select * from dog_tb where name = ?";}HivePreparedStatement pStSm= (HivePreparedStatement) conn.prepareStatement(sql);if (index >= 0 && StringUtils.isNotEmpty(value)){pStSm.setString(index, value);}ResultSet resultSet = pStSm.executeQuery();StringBuilder builder = new StringBuilder();while (resultSet.next()){builder.setLength(0);for (String col:columns){builder.append(resultSet.getString(col)).append(";");}String result = builder.substring(0,builder.length()-1);list.add(result);log.info("row: {}",result);}return list;}}

在这里插入图片描述
在这里插入图片描述

如果插入或查询报错可通过如下位置查询报错信息

在这里插入图片描述

相关文章:

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用 一.Hive 简介二.Hive 搭建1.下载2.安装1.解压并配置 HIVE2.修改 hive-site.xml3.修改 hadoop 的 core-site.xml4.启动 三.Hive 测试1.基础测试2.建库建表3.Java 连接测试1.Pom依赖2.Yarm 配置文件3.启动类4.配置类5.测试类 一.Hive 简介 Hive 是基于…...

vue3常用API之学习笔记

目录 一、setup函数 vue2与vue3变量区别 二、生命周期 三、reactive方法 四、ref方法 1、简介 2、使用 3、ref与reactive 4、获取标签元素或组件 五、toRef 1、简介 2、ref与toRef的区别 六、toRefs 七、shallowReactive 浅reactive 1、简介 2、shallowreactiv…...

Python 程序设计入门(005)—— 字符串操作

Python 程序设计入门&#xff08;005&#xff09;—— 字符串操作 目录 Python 程序设计入门&#xff08;005&#xff09;—— 字符串操作一、字符串切片与连接1、切片的索引方式2、切片操作的基本表达式3、 切片操作举例4、字符串连接 二、字符串替换&#xff1a;replace() 方…...

怎样将项目jar包放到服务器上

目录 1、在配置文件中配置账号密码 2.在父级的pom里面&#xff0c;加上这个标签 3. deploy部署 4. 注&#xff1a;这两个id得匹配上&#xff08;原因&#xff1a;有的人会只有上传到测试包的权限&#xff0c;id对应&#xff0c;拥有账号密码的才能有权限&#xff09; 5.子项…...

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1&#xff0c; ruby 2&#xff0c;修改launch.json...

【云原生】使用kubeadm搭建K8S

目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm&#xff0c;kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master&#xff08;2C/4G&#xff0c;cpu核心…...

HCIE-Datacom真题和机构资料

通过认证验证的能力 具备坚实的企业网络跨场景融合解决方案理论知识&#xff0c;能够使用华为数通产品及解决方案进行企业园区网络、广域互联网络及广域承载网络的规划、建设、维护及优化&#xff0c;能够胜任企业网络全场景专家岗位&#xff08;包括客户经理、项目经理、售前…...

轮足机器人硬件总结

简介 本文主要根据“轮腿机器人Hyun”总结的硬件部分。 轮腿机器人Hyun开源地址&#xff1a;https://github.com/HuGuoXuang/Hyun 1 电源部分 1.1 78M05 78M05是一款三端稳压器芯片&#xff0c;它可以将输入电压稳定输出为5V直流电压. 1.2 AMS1117-3.3 AMS1117-3.3是一种输…...

Flowable-网关-排他网关

目录 定义图形标记XML内容示例视频教程 定义 排他网关&#xff0c;也叫异或&#xff08;XOR&#xff09;网关&#xff0c;是 BPMN 中使用的最常见的网关之一&#xff0c;用来在流转中实 现发散分支决策。排他网关需要和条件顺序流搭配使用&#xff0c;当流程执行到排他网关&am…...

GET 和 POST 的区别

GET 和 POST 的区别&#xff08;流利说&#xff09; 从 http 协议的角度来说&#xff0c;GET 和 POST 它们都只是请求行中的第一个单词&#xff0c;除了语义不同&#xff0c;其实没有本质的区别。 之所以在实际开发中会产生各种区别&#xff0c;主要是因为浏览器的默认行为造成…...

FFmpeg中硬解码后深度学习模型的图像处理dnn_processing(一)

ffmpeg 硬件解码 ffmpeg硬件解码可以使用最新的vulkan来做&#xff0c;基本上来说&#xff0c;不挑操作系统是比较重要的&#xff0c;如果直接使用cuda也是非常好的选择。 AVPixelFormat sourcepf AV_PIX_FMT_NV12;// AV_PIX_FMT_NV12;// AV_PIX_FMT_YUV420P;AVPixelFormat d…...

计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

local-path-provisioner的使用(hostPath、local、local-path-provisioner三者对比)

前言 环境&#xff1a;k8s 1.22.17 、centos7.9 有时候&#xff0c;为了使用本地服务器上的磁盘存储资源&#xff0c;我们会使用hostPath这种方式来为k8s提供本地存储&#xff0c;本篇就来对比一下hostPath、local这两种使用本地服务器储存的方案&#xff0c;从而引出第三种lo…...

命令行快捷键Mac Iterm2

原文:Jump forwards, backwards and delete a word in iTerm2 on Mac OS iTerm2并不允许你使用 ⌥← 或 ⌥→ 来跳过单词。 你也不能使用 ⌥backspace 来删除整个单词。 下面是在Mac OS上如何配置iTerm2以便能做到这一点的方法。 退格键 首先&#xff0c;你需要将你的左侧 ⌥…...

无涯教程-Lua - Modules(模块)

模块就像可以使用 require 加载的库&#xff0c;并且具有包含Table的单个全局名称&#xff0c;该模块可以包含许多函数和变量。 Lua 模块 其中一些模块示例如下。 -- Assuming we have a module printFormatter -- Also printFormatter has a funtion simpleFormat(arg) -- …...

url重定向

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题。 url跳转比较直接的危害是…...

Linux 查看IP地址、子网掩码和网关的配置信息

使用以下命令来查看IP地址、子网掩码和网关的配置信息&#xff1a; 1&#xff0c;使用ifconfig命令&#xff1a; ifconfig 在输出中&#xff0c;找到你正在使用的网络接口的配置信息。你将看到类似以下的内容&#xff1a; eth0: flags4163<UP,BROADCAST,RUNNING,MULTICA…...

token

token验证流程&#xff1a; ①客户端使用用户名和密码请求登录。 ②服务端收到请求&#xff0c;验证用户名和密码。 ③验证成功后&#xff0c;服务端会生成一个token&#xff0c;然后把这个token发送给客户端。 ④客户端收到token后把它存储起来&#xff0c;可以放在cookie…...

利用awk筛选给定时间范围内的日志

文章目录 筛选给定时间范围内的日志时间时间戳什么是时间戳&#xff1f; 系统时间 筛选日志时间示例简单示例mktime()函数是什么 进阶示例 筛选给定时间范围内的日志 时间 时间的表示方法&#xff1a; 时间戳系统时间&#xff08;年月日时间&#xff09; 时间戳 什么是时间…...

ORACLE字符集概念学习

1、字符集的一些基本知识 字符集有很多种&#xff0c;最初的字符集是ASCII&#xff0c;由于ASCII支持的字符很有限&#xff0c;因此随后又出现了很多的编码方案&#xff0c;这些编码方案大部分都是包括了ASCII 的。EBCDIC编码是另一个比较基本的编码&#xff0c;它的部分字符采…...

背单词为什么不背词典:CANN上FlashAttention的分块逻辑

上个月有个实习生问我&#xff0c;为什么昇腾CANN的ops-transformer仓库里&#xff0c;FlashAttention算子比标准实现快那么多。我说你先想一个问题&#xff1a;背四级单词&#xff0c;你是把整本词典摊开从头背&#xff0c;还是一次看一页&#xff1f;他说当然是看一页。我说对…...

用ESP32和EC11编码器做个无极调光台灯,Arduino代码全解析(附防抖电路)

用ESP32和EC11编码器打造无极调光台灯&#xff1a;从硬件防抖到代码优化的完整指南 在智能家居DIY领域&#xff0c;无极调光台灯一直是创客们热衷的项目之一。传统旋钮调光台灯存在机械磨损、精度有限等问题&#xff0c;而基于ESP32和EC11编码器的数字解决方案不仅寿命更长&…...

别再只读原始值了!MPU6050数据滤波与姿态解算入门:用STM32实现简易角度估算

从原始数据到稳定姿态&#xff1a;MPU6050滤波与解算实战指南 当你第一次成功读取MPU6050的原始数据时&#xff0c;可能会被那些不断跳动的数值弄得手足无措。这些看似杂乱的数据背后&#xff0c;隐藏着设备在三维空间中的运动秘密。本文将带你超越基础的数据读取&#xff0c;探…...

CE修改器进阶:通过内存结构分析,破解‘敌我同源’的游戏逻辑(以浮点数血量为例)

CE修改器进阶&#xff1a;内存结构分析与游戏逻辑破解实战 游戏修改器一直是技术爱好者探索虚拟世界底层逻辑的利器。在众多工具中&#xff0c;Cheat Engine&#xff08;简称CE&#xff09;以其强大的内存扫描和调试功能脱颖而出&#xff0c;成为逆向工程领域的瑞士军刀。今天&…...

kagent支持的5大AI框架对比:ADK、CrewAI、LangGraph、OpenAI、技能框架

kagent支持的5大AI框架对比&#xff1a;ADK、CrewAI、LangGraph、OpenAI、技能框架 【免费下载链接】kagent Cloud Native Agentic AI | Discord: https://bit.ly/kagentdiscord 项目地址: https://gitcode.com/gh_mirrors/ka/kagent kagent作为一款云原生智能代理平台&…...

顶尖销售都在读什么?这三本书揭示理解客户的奥秘

优秀销售真正厉害的地方&#xff0c;不是把产品硬推给别人&#xff0c;而是能够理解客户真正的需求&#xff0c;并让客户相信&#xff1a;你是在帮他解决问题&#xff0c;而不是单纯想把东西卖出去。 而要真正提升销售能力&#xff0c;读几本值得反复看的经典书籍&#xff0c;…...

论文查重,重复率太高怎么办?

先说一句最重要的&#xff1a;别一看到 45%、60%、70% 就直接崩。高重复率不代表这篇论文废了。先看你高在哪。因为不同位置的重复&#xff0c;处理方式完全不一样。第一步&#xff1a;先分类&#xff0c;不要闭眼硬改一般高重复来源就这几类&#xff1a;文献综述爆红理论定义爆…...

直流电机双闭环控制调参避坑指南:从Simulink仿真到稳定波形的关键几步

直流电机双闭环控制调参避坑指南&#xff1a;从Simulink仿真到稳定波形的关键几步 在电机控制领域&#xff0c;双闭环系统因其出色的动态性能和抗扰能力而广受青睐。然而&#xff0c;从理论设计到实际调试&#xff0c;工程师们常常会遇到各种"坑"&#xff1a;转速震荡…...

全球仅12家顶级艺术机构内部流通的Perplexity知识图谱映射表(含RIS/JSON-LD双格式导出密钥)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity艺术知识搜索的范式革命 传统搜索引擎依赖关键词匹配与页面权重排序&#xff0c;在艺术史、当代策展理论、跨媒介创作方法论等高度语境化、隐喻密集的知识领域中&#xff0c;常陷入“查得到却…...

VT2516A板卡进阶玩法:模拟汽车线束开路/短路故障,做更真实的ECU诊断测试

VT2516A板卡实战&#xff1a;构建汽车线束故障注入测试系统 在汽车电子控制系统开发中&#xff0c;ECU对电气故障的检测和处理能力直接关系到整车安全性和可靠性。传统测试方法往往局限于理想工况下的信号模拟&#xff0c;难以覆盖真实车辆可能遭遇的线束开路、短路等异常场景…...