Sqoop数据迁移工具的使用

文章作者:foochane 

原文链接:https://foochane.cn/article/2019063001.html

Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDFS/HIVE sqoop数据到MySQL

1 sqoop简单介绍

sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。用于数据的导入和导出。

sqoop

  • 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
  • 导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等

sqoop的工作机制是将导入或导出命令翻译成mapreduce程序来实现,在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。

2 sqoop安装

安装sqoop前要先安装好java环境和hadoop环境。

sqoop只是一个工具,安装在那个节点都可以,只要有java环境和hadoop环境,并且能连接到对应数据库即可。

2.1 下载并解压

下载地址:http://mirror.bit.edu.cn/apache/sqoop/
下载:sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

解压到安装目录下

2.2 修改配置文件

sqoop-env-template.sh复制一份重命名为sqoop-env.sh文件,在sqoop-env.sh文件中添加如下内容:

export HADOOP_COMMON_HOME=/usr/local/bigdata/hadoop-2.7.1
export HADOOP_MAPRED_HOME=/usr/local/bigdata/hadoop-2.7.1
export HIVE_HOME=/usr/local/bigdata/hive-2.3.5

2.3 安装mysql的jdbc启动

将 mysql-connector-java-5.1.45.jar 拷贝到sqoop的lib目录下。

$ sudo apt-get install libmysql-java #之前已经装过了
$ ln -s /usr/share/java/mysql-connector-java-5.1.45.jar /usr/local/bigdata/sqoop-1.4.7/lib

也可以自己手动复制 mysql-connector-java-5.1.45.jar。

2.4 验证sqoop

查看sqoop版本

$ bin/sqoop-version
Warning: /usr/local/bigdata/sqoop-1.4.7/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/bigdata/sqoop-1.4.7/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
19/06/30 03:03:07 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
Sqoop 1.4.7
git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8
Compiled by maugli on Thu Dec 21 15:59:58 STD 20

会出现几个警告,暂时先不管。

验证sqoop到mysql业务库之间的连通性:

$ bin/sqoop-list-databases --connect jdbc:mysql://Master:3306 --username hiveuser --password 123456
$ bin/sqoop-list-tables --connect jdbc:mysql://Master:3306/metastore --username hiveuser --password 123456

3 sqoop数据导入

3.1 从MySql导数据到HDFS

先在mysql中,建表插入测试数据;

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for `emp`
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (`id` int(11) DEFAULT NULL,`name` varchar(100) DEFAULT NULL,`deg` varchar(100) DEFAULT NULL,`salary` int(11) DEFAULT NULL,`dept` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('1201', 'gopal', 'manager', '50000', 'TP');
INSERT INTO `emp` VALUES ('1202', 'manisha', 'Proof reader', '50000', 'TP');
INSERT INTO `emp` VALUES ('1203', 'khalil', 'php dev', '30000', 'AC');
INSERT INTO `emp` VALUES ('1204', 'prasanth', 'php dev', '30000', 'AC');
INSERT INTO `emp` VALUES ('1205', 'kranthi', 'admin', '20000', 'TP');-- ----------------------------
-- Table structure for `emp_add`
-- ----------------------------
DROP TABLE IF EXISTS `emp_add`;
CREATE TABLE `emp_add` (`id` int(11) DEFAULT NULL,`hno` varchar(100) DEFAULT NULL,`street` varchar(100) DEFAULT NULL,`city` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ----------------------------
-- Records of emp_add
-- ----------------------------
INSERT INTO `emp_add` VALUES ('1201', '288A', 'vgiri', 'jublee');
INSERT INTO `emp_add` VALUES ('1202', '108I', 'aoc', 'sec-bad');
INSERT INTO `emp_add` VALUES ('1203', '144Z', 'pgutta', 'hyd');
INSERT INTO `emp_add` VALUES ('1204', '78B', 'old city', 'sec-bad');
INSERT INTO `emp_add` VALUES ('1205', '720X', 'hitec', 'sec-bad');-- ----------------------------
-- Table structure for `emp_conn`
-- ----------------------------
DROP TABLE IF EXISTS `emp_conn`;
CREATE TABLE `emp_conn` (`id` int(100) DEFAULT NULL,`phno` varchar(100) DEFAULT NULL,`email` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ----------------------------
-- Records of emp_conn
-- ----------------------------
INSERT INTO `emp_conn` VALUES ('1201', '2356742', 'gopal@tp.com');
INSERT INTO `emp_conn` VALUES ('1202', '1661663', 'manisha@tp.com');
INSERT INTO `emp_conn` VALUES ('1203', '8887776', 'khalil@ac.com');
INSERT INTO `emp_conn` VALUES ('1204', '9988774', 'prasanth@ac.com');
INSERT INTO `emp_conn` VALUES ('1205', '1231231', 'kranthi@tp.com');

导入:

bin/sqoop import   \
--connect jdbc:mysql://Master:3306/test   \
--username root  \
--password root   \
--target-dir /sqooptest \
--fields-terminated-by ',' \
--table emp   \
--m 2 \
--split-by id;
  • --connect:指定数据库
  • --username:指定用户名
  • --password:指定密码
  • --table:指定要导入的表
  • --target-dir:指定hdfs的目录
  • --fields-terminated-by:指定文件分割符
  • --m: 指定maptask个数,如果大于1,必须指定split-by参数,如指定为2,最后生产的文件会是两个
  • --split-by:指定分片的字段

如果表的数据量不是很大就不用指定设置--m参数了

注意导入前前启动hdfs和yarn,并且提交的yarn上运行,而不是在本地运行。

示例:

$ bin/sqoop import   --connect jdbc:mysql://Master:3306/test   --username hadoop  --password 123456   --target-dir /sqooptest --fields-terminated-by ',' --table emp  --m 1  --split-by id;
Warning: /usr/local/bigdata/sqoop-1.4.7/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/bigdata/sqoop-1.4.7/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
19/06/30 05:00:43 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
19/06/30 05:00:43 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
19/06/30 05:00:44 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
19/06/30 05:00:44 INFO tool.CodeGenTool: Beginning code generation
Sun Jun 30 05:00:45 UTC 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
19/06/30 05:00:46 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `emp` AS t LIMIT 1
19/06/30 05:00:46 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `emp` AS t LIMIT 1
19/06/30 05:00:46 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/bigdata/hadoop-2.7.1
Note: /tmp/sqoop-hadoop/compile/cd17c36add75dfe67edd3facf7538def/emp.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
19/06/30 05:00:56 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hadoop/compile/cd17c36add75dfe67edd3facf7538def/emp.jar
19/06/30 05:00:56 WARN manager.MySQLManager: It looks like you are importing from mysql.
19/06/30 05:00:56 WARN manager.MySQLManager: This transfer can be faster! Use the --direct
19/06/30 05:00:56 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.
19/06/30 05:00:56 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)
19/06/30 05:00:56 INFO mapreduce.ImportJobBase: Beginning import of emp
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/bigdata/hadoop-2.7.1/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/bigdata/hbase-2.0.5/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
19/06/30 05:00:58 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar
19/06/30 05:01:06 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
19/06/30 05:01:07 INFO client.RMProxy: Connecting to ResourceManager at Master/192.168.233.200:8032
Sun Jun 30 05:01:55 UTC 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
19/06/30 05:01:56 INFO db.DBInputFormat: Using read commited transaction isolation
19/06/30 05:01:56 INFO mapreduce.JobSubmitter: number of splits:1
19/06/30 05:01:58 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1561868076549_0002
19/06/30 05:02:05 INFO impl.YarnClientImpl: Submitted application application_1561868076549_0002
19/06/30 05:02:06 INFO mapreduce.Job: The url to track the job: http://Master:8088/proxy/application_1561868076549_0002/
19/06/30 05:02:06 INFO mapreduce.Job: Running job: job_1561868076549_0002
19/06/30 05:02:47 INFO mapreduce.Job: Job job_1561868076549_0002 running in uber mode : false
19/06/30 05:02:48 INFO mapreduce.Job:  map 0% reduce 0%
19/06/30 05:03:35 INFO mapreduce.Job:  map 100% reduce 0%
19/06/30 05:03:36 INFO mapreduce.Job: Job job_1561868076549_0002 completed successfully
19/06/30 05:03:37 INFO mapreduce.Job: Counters: 30File System CountersFILE: Number of bytes read=0FILE: Number of bytes written=135030FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=87HDFS: Number of bytes written=151HDFS: Number of read operations=4HDFS: Number of large read operations=0HDFS: Number of write operations=2Job CountersLaunched map tasks=1Other local map tasks=1Total time spent by all maps in occupied slots (ms)=42476Total time spent by all reduces in occupied slots (ms)=0Total time spent by all map tasks (ms)=42476Total vcore-seconds taken by all map tasks=42476Total megabyte-seconds taken by all map tasks=43495424Map-Reduce FrameworkMap input records=5Map output records=5Input split bytes=87Spilled Records=0Failed Shuffles=0Merged Map outputs=0GC time elapsed (ms)=250CPU time spent (ms)=2700Physical memory (bytes) snapshot=108883968Virtual memory (bytes) snapshot=1934733312Total committed heap usage (bytes)=18415616File Input Format CountersBytes Read=0File Output Format CountersBytes Written=151
19/06/30 05:03:37 INFO mapreduce.ImportJobBase: Transferred 151 bytes in 150.6495 seconds (1.0023 bytes/sec)
19/06/30 05:03:37 INFO mapreduce.ImportJobBase: Retrieved 5 records.

查看是否导入成功:

$ hdfs dfs -cat /sqooptest/part-m-*
1201,gopal,manager,50000,TP
1202,manisha,Proof reader,50000,TP
1203,khalil,php dev,30000,AC
1204,prasanth,php dev,30000,AC
1205,kranthi,admin,20000,TP

3.2 从MySql导数据到Hive

命令:

bin/sqoop import \
--connect jdbc:mysql://Master:3306/test \
--username hadoop  \
--password 123456  \
--table emp  \
--hive-import  \
--split-by id  \
--m 1;

导入到hive,需要添加--hive-import参数,不用指定--target-dir其他参数跟导入到hdfs上一样。

3.3 导入表数据子集

有时候我们并不需要,导入数据表中的全部数据,sqoop也支持导入数据表的部分数据。

这是可以使用Sqoop的where语句。where子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。

where子句的语法如下:

--where <condition>

下面的命令用来导入emp_add表数据的子集。居住城市为:sec-bad

bin/sqoop import \
--connect jdbc:mysql://Master:3306/test \
--username hadoop \
--password 123456 \
--where "city ='sec-bad'" \
--target-dir /wherequery \
--table emp_add \--m 1

另外也可以使用select语句:

bin/sqoop import \
--connect jdbc:mysql://Master:3306/test \
--username hadoop \
--password 123456 \
--target-dir /wherequery2 \
--query 'select id,name,deg from emp WHERE id>1207 and $CONDITIONS' \
--split-by id \
--fields-terminated-by '\t' \
--m 2

3.4 增量导入

增量导入是仅导入新添加的表中的行的技术。

sqoop支持两种增量MySql导入到hive的模式,一种是append,即通过指定一个递增的列。另种是可以根据时间戳。

3.4.1 append

指定如下参数:

--incremental append  
--check-column num_id 
--last-value 0 

--check-column 表示指定递增的字段,--last-value指定上一次到入的位置

如:

bin/sqoop import \
--connect jdbc:mysql://Master:3306/test \
--username hadoop \
--password 123456 \
--table emp --m 1 \
--incremental append \
--check-column id \
--last-value 1208

3.4.2 根据时间戳

命令中添加如下参数:

--incremental lastmodified 
--check-column created 
--last-value '2012-02-01 11:0:00' 

就是只导入created2012-02-01 11:0:00更大的数据。

4 Sqoop的数据导出

将数据从HDFS把文件导出到RDBMS数据库,导出前目标表必须存在于目标数据库中。默认操作是从将文件中的数据使用INSERT语句插入到表中。更新模式下,是生成UPDATE语句更新表数据
语法

$ sqoop export (generic-args) (export-args) 

导入过程

1、首先需要手动创建mysql中的目标表

mysql> USE db;
mysql> CREATE TABLE employee ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20), deg VARCHAR(20),salary INT,dept VARCHAR(10));

2、执行导出命令

bin/sqoop export \
--connect jdbc:mysql://Master:3306/test \
--username root \
--password root \
--table employee \
--export-dir /user/hadoop/emp/

3、验证表mysql命令行。

mysql>select * from employee;

如果给定的数据存储成功,那么可以找到数据在如下的employee表。

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | kalil        | php dev     | 30000               | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
+------+--------------+-------------+-------------------+--------+

转载于:https://www.cnblogs.com/foochane/p/11110583.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 3.2矩阵变量是什么? –第2部分:代码

关于Spring对Matrix Variables的支持&#xff0c;我最近的博客集中在解释它们是什么以及为什么要使用它们。 整理了内容和原因之后 &#xff0c;此博客全面介绍了如何以及如何使用它们。 我还给出了几个Matrix URI的示例&#xff0c;因此&#xff0c;演示一些处理几个URI的代码…

java中io.nio.aio_Java中网络IO的实现方式-BIO、NIO、AIO

在网络编程中&#xff0c;接触到最多的就是利用Socket进行网络通信开发。在Java中主要是以下三种实现方式BIO、NIO、AIO。关于这三个概念的辨析以前一直都是好像懂&#xff0c;但是表达的不是很清楚&#xff0c;下面做个总结完全辨析清楚。1. BIO方式首先我用一个较为通俗的语言…

CentOS 中 配置 Nginx 支持 https

一、基础设置&#xff1a; 1、yum -y update 2、yum -y install openssl* 3、cd /usr/local/nginx/conf 4、mkdir ./ssl 5、cd ./ssl  # 在ssl目录下用openssl创建 .key 私钥文件和 .crt 证书文件 6、openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout www.usha…

小a与黄金街道(欧拉函数,快速幂)

链接&#xff1a;https://ac.nowcoder.com/acm/contest/317/D来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K64bit IO Format: %lld题目描述 小a和小b来到了一条布满了黄金的街道上。它…

呼叫中心资料

概念&#xff1a;呼叫中心是利用现代通信手段集中处理与客户关系的交互过程的机构。组成&#xff1a; 交换机(PBX)排队机(ACD)计算机电话集成(CTI)交互式语音应答(IVR)来话呼叫管理去话呼叫管理业务计费系统监控系统管理/统计系统客户关系管理(CRM)系统帮助台多种应用服务器&a…

如何在Play Framework 2中实现会话超时

如果您遵循Play Framework 2指南以实施身份验证&#xff1a; http://www.playframework.com/doc-m-e-t-t-i o / n..2..2..2 / Jac agide4-您会注意到Play框架2中没有会话超时。在Play框架1中存在&#xff0c;但Play框架2采用了不同的方法。 我要实现自己的会话超时&#xff0c…

C++中this指针

由类生成对象时&#xff0c;对象中只保存私有数据。 因为由一个类生成的所有对象为其数据服务的方法都是相同的&#xff0c;因此&#xff0c;一个类中的方法是大家所共用的。 而这就牵扯到当对象A调用方法时&#xff0c;如何保证该方法操作的数据是对象A的数据。 #include<i…

jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

JFinal简介JFinal 是基于 Java 语言的极速 WEB ORM 框架&#xff0c;其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率&#xff01;为您节约更多时间&#xff0c…

PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法

// 前台代码 $.ajax({url: http://www.ushark.net/home/save_trial_apply,dataType: jsonp,processData: false,data: $(.layui-layer-content #trialFormInfo).serialize(), }) .done(function(data) {layer.msg(申请成功); }) .fail(function(jqXHR, textStatus, errorThrown…

[转]JavaScript面向对象的特性

如果你使用JavaScript编程&#xff0c;你或许会怀疑它是否包含了面向对象&#xff08;OO&#xff09;的结构。实际上&#xff0c;JavaScript的确支持面向对象的架构――在某种程度上。本文将通过一个可扩展向量图形&#xff08;SVG&#xff09;的实例来说明JavaScript的OO结构。…

命令行获取docker远程仓库镜像列表

命令行获取docker远程仓库镜像列表 获取思路 通过curl获取镜像tag的json串,解析后得到${image}:${tag}的格式 curl获取示例 # curl [:-s] ${API}/${image}/tags curl https://registry.hub.docker.com/v1/repositories/nginx/tags 获取脚本docker-search docker-search.sh #!/b…

如何使用VisualVM监视服务器上的多个JVM

在上一篇文章中&#xff0c;我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server。 这些启动之后&#xff0c;您如何检查它们的健康状况&#xff1f; 您可以使用管理员的/ console网络应用。 但是&#xff0c;所有默认的Oracle / Open JDK 6附带的另一个…

java isight zmf_isight集成catia和abaqus,nastran流程详解

isight集成catia和abaqus,nastran流程详解CAD软件中参数化建模&#xff0c;导入有限元软件中计算各个工况&#xff0c;isight根据计算结果调整模型参数&#xff0c;反复迭代计算的过程是尺寸优化的典型问题~下面将比较详解叙述菜鸟新手是如何成功用isight集成catia和abaqus流程…

KindEditor编辑器, 利用ajax动态切换编辑器内容

// 后台成功返回数据后的js处理 KindEditor.remove(#content_id); // 先移除之前创建的编辑器 var editor KindEditor.create(#content_id, { // 再重新创建编辑器     themeType: simple,     resizeType: 1,     urlType: domain,   // 将图片保存为绝对路径…

排序算法 JavaScript

一、冒泡排序 算法介绍&#xff1a; 1.比较相邻的两个元素,如果前一个比后一个大&#xff0c;则交换位置。 2.第一轮把最大的元素放到了最后面。 3.由于每次排序最后一个都是最大的&#xff0c;所以之后按照步骤1排序最后一个元素不用比较。 function bubble_sort(arr){var swa…

[你必须知道的.NET] 第一回:恩怨情仇:is和as

发布日期&#xff1a;2007.4.7 作者&#xff1a;Anytao ©2007 Anytao.com 转贴请注明出处&#xff0c;留此信息。 本文将介绍以下内容&#xff1a; • 类型转换 • is/as操作符小议 1. 引言 类型安全是.NET设计之初重点考虑的内容之一&#xff0c;对于程序设计者来说&…

USACO 6.3 章节 你对搜索和剪枝一无所知QAQ

emmm........很久很久以前 把6.2过了 所以emmmmmm 直接跳过 &#xff0c;从6.1到6.3吧 Fence Rails 题目大意 N<50个数A1,A2... 1023个数,每个数数值<128,B 问 A 们能拆分成多少个B,求最多的个数 样例 解释 A: 3030 4018193 501516172 2524 B: 15 (ok) 16 (ok) 17 (ok) 1…

在基于Spring的Web应用程序中使用Http Session

在基于Spring的Web应用程序中拥有和使用Http会话有多种方法。 这是基于最近项目经验的总结。 方法1 只需在需要的HttpSession中注入即可。 Service public class ShoppingCartService {Autowired private HttpSession httpSession;... }尽管令人惊讶&#xff0c;但由于上述服…

获取当前鼠标的位置以及组件的位置

总结&#xff1a; div如果要触发鼠标事件要加上css样式cusor:pointer。 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

谷歌推大语言模型VideoPoet:文本图片皆可生成视频和音频

Google Research最近发布了一款名为VideoPoet的大型语言模型&#xff08;LLM&#xff09;&#xff0c;旨在解决当前视频生成领域的挑战。该领域近年来涌现出许多视频生成模型&#xff0c;但在生成连贯的大运动时仍存在瓶颈。现有领先模型要么生成较小的运动&#xff0c;要么在生…