Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)

简介: 【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)

1.环境说明

# 不必要信息不再贴出
# JDK
[root@tcloud ~]# java -version
java version "1.8.0_251"
# MySQL
[root@tcloud ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.28
# Hadoop
[root@tcloud ~]# hadoop version
Hadoop 3.1.3
# Hive 
[root@tcloud ~]# hive --version
Hive 3.1.2
# Sqoop
[root@tcloud ~]# sqoop version
Sqoop 1.4.7

2.基本命令

:one: 查看所有命令【 sqoop help 】

[root@tcloud ~]# sqoop help

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

:two: 查看某条命令的具体使用方法【 sqoop help COMMAND 】

[root@tcloud ~]# sqoop help job

usage: sqoop job [GENERIC-ARGS] [JOB-ARGS] [-- [<tool-name>] [TOOL-ARGS]]

Job management arguments:
   --create <job-id>            Create a new saved job
   --delete <job-id>            Delete a saved job
   --exec <job-id>              Run a saved job
   --help                       Print usage instructions
   --list                       List saved jobs
   --meta-connect <jdbc-uri>    Specify JDBC connect string for the
                                metastore
   --show <job-id>              Show the parameters for a saved job
   --verbose                    Print more information while working

Generic Hadoop command-line arguments:
(must preceed any tool-specific arguments)
Generic options supported are:
-conf <configuration file>        specify an application configuration file
-D <property=value>               define a value for a given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port>  specify a ResourceManager
-files <file1,...>                specify a comma-separated list of files to be copied to the map reduce cluster
-libjars <jar1,...>               specify a comma-separated list of jar files to be included in the classpath
-archives <archive1,...>          specify a comma-separated list of archives to be unarchived on the compute machines

The general command line syntax is:
command [genericOptions] [commandOptions]

3.查询操作

3.1 list-databases

查询MySQL所有数据库,通常用于 Sqoop 与 MySQL 连通测试:

# 注意:以下URL写法都可以【但是建议用第一个或第四个】
jdbc:mysql://ip:port/
jdbc:mysql://ip/
jdbc:mysql://ip
jdbc:mysql://hostname:port/
jdbc:mysql://hostname/
jdbc:mysql://hostname
jdbc:mysql:///
jdbc:mysql://

【具体参数可以使用 sqoop help list-databases 查看】实例:

sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/ \
--username root \
-password tcloud@2021

结果:

# INFO信息不再贴出这里只贴出WARN信息
2021-09-09 10:12:09,596 WARN tool.BaseSqoopTool: 
Setting your password on the command-line is insecure. Consider using -P instead.

Thu Sep 09 10:12:10 CST 2021 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.

information_schema
metastore
mysql
performance_schema
sys

【2个】WARN处理:

# 第一个WARN是说 在命令行中设置密码是不安全的 考虑使用-P代替 修改后
sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/ \
--username root \
-P
# 然后输入密码即可【这显然不利于自动化 使用过程中我们可以忽略此WARN】
# 第二个WARN是说 不建议在不验证服务器身份的情况下建立SSL连接 并给出解决建议 修改后
sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/?useSSL=false \
--username root \
-P

3.2 list-tables

查询指定数据库中所有数据表,这里要注意一下 :point_right:(会查询出所有的表和视图,但不包含函数和存储过程)【具体参数可以使用 sqoop help list-tables 查看】实例:

# 找一个表比较少的库进行测试
sqoop list-tables \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password aliyun@2021

结果:

2021-09-09 11:05:23,943 ERROR manager.CatalogQueryManager: Failed to list tables
java.sql.SQLException: Access denied for user 'root'@'tcloud' (using password: YES)

【1个】ERROR处理:

# 原来是密码错了 修改后
sqoop list-tables \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password tcloud@2021

# 这里只贴出部分结果
host_summary
host_summary_by_file_io
host_summary_by_file_io_type
host_summary_by_stages
host_summary_by_statement_latency
host_summary_by_statement_type

3.3 eval

通过sqoop执行SQL语句对关系数据库进行操作,这样我们在使用import这种工具进行数据导入前,预先了解相关的SQL语句是否正确,并能将结果显示在控制台。【具体参数可以使用 sqoop help eval 查看】实例:

sqoop eval \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password tcloud@2021 \
--query "select * from version"

# 结果
------------------
| sys_version | mysql_version |
------------------
| 1.5.2 | 5.7.28 |
------------------

4.MySQL数据导入导出到HDFS

4.1 import

  导入导出有时候我们无法分辨方向,这时把HDFS、Hive、HBase 等分布式文件存储系统当作【主体】,进入文件系统的就是导入import,从文件系统获取数据就是导出export。

  将 MySQL 数据库中的 help_keyword 表数据导入到 HDFS 的 /sqoop 目录下,如果导入目录存在则先删除再导入,使用 n 个 map tasks 并行导入。【具体参数可以使用 sqoop help import 查看】实例:

注:help_keyword 是 MySQL数据库内置的一张字典表,之后的示例均使用这张表。

  1. 直接导入
    ```shell

    备注版

    sqoop import \
    --connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \
    --username root \
    --password tcloud@2021 \
    --table help_keyword \ # 待导入的表名称
    --delete-target-dir \ # 目标目录存在则先删除
    --target-dir /sqoop \ # 导入的目标目录
    --fields-terminated-by '\t' \ # 指定导出数据的分隔符
    -m n # 指定并行执行的 map tasks 数量

可执行版

sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop \
--fields-terminated-by '\t' \
-m 1

结果,这里只保留WARN信息:
```bash
# 这个WARN我们可以忽略
2021-09-09 13:40:51,014 WARN tool.BaseSqoopTool: 
Setting your password on the command-line is insecure. Consider using -P instead.

# 开启直接模式 MySQ会使用自带的导入导出工具进行处理
2021-09-09 13:40:59,272 WARN manager.MySQLManager: 
It looks like you are importing from mysql.
This transfer can be faster! Use the --direct
option to exercise a MySQL-specific fast path.

# 原因是 mapred-site.xml 配置了yarn模式 启动yarn 或者去掉yarn配置都行
# 【云服务器内存较小所以选择去掉了yarn】
2021-09-09 13:40:59,682 INFO client.RMProxy: 
Connecting to ResourceManager at tcloud/xxx.xx.x.x:8032

2021-09-09 13:41:01,488 INFO ipc.Client: Retrying connect to server: 
tcloud/xxx.xx.x.x:8032. Already tried 0 time(s); 
retry policy is RetryUpToMaximumCountWithFixedSleep(
maxRetries=10, sleepTime=1000 MILLISECONDS)

解决无法连接 ResourceManager 后再次执行,出现 ClassNotFoundException:

2021-09-09 14:55:36,267 WARN mapred.LocalJobRunner: job_local1346801578_0001
java.lang.Exception: java.lang.RuntimeException:
java.lang.ClassNotFoundException: Class help_keyword not found

这个很明显是执行job时找不到jar包导致的,处理方法是将生成到 /tmp/sqoop-你的用户名/compile(或者是/tmp/sqoop/compile)的文件放到$SQOOP_HOME/lib文件夹下,也可以使用--bindir指定生成代码的文件夹,处理后:

sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop \
--fields-terminated-by '\t' \
--bindir /usr/local/sqoop/lib/ \
-m 1

修改--bindir后执行仍然会报错,但是这次会生成jar文件,再次执行就成功了,但是这样下去,lib下的文件会越来越多,不是办法:

[root@tcloud lib]# ll
total 17820
-rw-r--r-- 1 root root     611 Sep  9 15:09 help_keyword$1.class
-rw-r--r-- 1 root root     617 Sep  9 15:09 help_keyword$2.class
-rw-r--r-- 1 root root    9441 Sep  9 15:09 help_keyword.class
-rw-r--r-- 1 root root     237 Sep  9 15:09 help_keyword$FieldSetterCommand.class
-rw-r--r-- 1 root root    5294 Sep  9 15:09 help_keyword.jar
-rw-r--r-- 1 root root   11509 Sep  9 15:09 help_keyword.java

⚠️以下方法无法解决此问题,仍然需要使用 --bindir $SQOOP_HOME/lib:

【方法一:x:】

# 1.配置Hadoop的core-site.xml添加sqoop1代理
vim /usr/local/hadoop-3.1.3/etc/hadoop/core-site.xml
    # 添加以下内容
    <property>
        <name>hadoop.proxyuser.sqoop1.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.sqoop1.groups</name>
        <value>*</value>
    </property>

# 2.comma separated list of system users who CAN run applications
# 【可以运行应用程序的系统用户列表,以逗号分隔】
vim /usr/local/hadoop-3.1.3/etc/hadoop/container-executor.cfg
    # 添加
    allowed.system.users=root,sqoop1

【方法二:x:】

# 将生成的jar文件配置到第三方库
vim /etc/profile.d/my_env.sh
    # 添加
    export SQOOP_SERVER_EXTRA_LIB=/tmp/sqoop-root/compile
  1. 【增量导入】追加模式和最后修改模式
    ```shell

    追加模式

    sqoop import \
    --driver com.mysql.jdbc.Driver \
    --connect jdbc:mysql://tcloud:3306/mysql \
    --username root \
    --password tcloud@2021 \
    --table help_keyword \
    --target-dir /sqoop/part-m-00000 \
    --incremental append \
    --check-column help_keyword_id \
    --last-value '666' \
    --bindir /usr/local/sqoop/lib/ \
    -m 1

最后修改模式

sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table slow_log\
--target-dir /sqoop/part-m-00000 \
--incremental lastmodified \
--check-column start_time\
--last-value '2021-09-08 20:59:15' \
--bindir /usr/local/sqoop/lib/ \
-m 1

incremental 参数有以下两个可选的选项:

+ append:要求参考列的值必须是递增的,所有大于  last-value 的值都会被导入;
+ lastmodified:要求参考列的值必须是  timestamp 类型,且插入数据时候要在参考列插入当前时间戳,更新数据时也要更新参考列的时间戳,所有时间晚于  last-value 的数据都会被导入。

Sqoop1的增量导入是依靠维护的参考列来判断哪些是增量数据。我们也可以使用 query 参数来进行手动的增量导入,会更加灵活。

3. SQL语句导入
```shell
# 注意:不能添加--table参数
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--query 'SELECT help_keyword_id,name from help_keyword where $CONDITIONS' \
--delete-target-dir \
--target-dir /sqoop_query \
--bindir /usr/local/sqoop/lib/ \
-m 1

4.2 export

【具体参数可以使用 sqoop help export 查看】导出的表必须预先创建,建表语句如下:

CREATE TABLE help_keyword_from_hdfs LIKE help_keyword ;
# 导出数据存储在 MySQL 的help_keyword_from_hdf 的表中
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hdfs \
--export-dir /sqoop \
--input-fields-terminated-by '\t'\
--bindir /usr/local/sqoop/lib/ \
--m 1

# 采用export插入数据的时候,如果数据已经存在了,插入会失败
# 如果我们使用-update-key,它会认为每个数据都是更新,比如我们使用下面这条语句:
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hdfs \
--update-key help_keyword_id \
--export-dir /sqoop \
--input-fields-terminated-by '\t'\
--bindir /usr/local/sqoop/lib/ \
--m 1

--update-mode allowinsert # 如果存在就更新,不存在就插入

5.MySQL数据导入导出到Hive

Sqoop 导入数据到 Hive 是通过先将数据导入到 HDFS 上的临时目录,然后再将数据从 HDFS 上 Load 到 Hive 中,最后将临时目录删除。可以使用 target-dir 来指定临时目录。

5.1 import

  1. 数据导入

导入到 Hive 中的 sqoop_test 数据库需要预先创建,不指定则默认使用 Hive 中的 default 库。

# 查看 hive 中的所有数据库
hive> SHOW DATABASES;
# 创建 sqoop_test 数据库
hive> CREATE DATABASE sqoop_test;
# 备注版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \         
# 待导入的表  
--delete-target-dir \             
# 如果临时目录存在删除
--target-dir /sqoop_hive \      
# 临时目录位置
--hive-database sqoop_test \      
# 导入到Hive的sqoop_test数据库,库需要预先创建。不指定则默认为default库
--hive-import \                
# 导入到 Hive
--hive-overwrite \             
# 如果 Hive 表中有数据则覆盖,这会清除表中原有的数据,然后再写入
--bindir /usr/local/sqoop/lib/ \
-m 1                            
# 并行度

# 可执行版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop_hive \
--hive-database sqoop_test \
--hive-import \
--hive-overwrite \
--bindir /usr/local/sqoop/lib/ \
-m 1
  • -hive-table emp指定在Hive中创建的表名为emp(默认数据库default)
  • -hive-table sqoop.emp指定在Hive中的sqoop数据库下创建emp表
  • -fields-terminated-by "\0001" 是设置每列之间的分隔符,"\0001"是ASCII码中的1,是hive的默认行内分隔符,而sqoop的默认行内分隔符为","
  • -lines-terminated-by "\n" 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;
  1. 导入验证
    # 查看 sqoop_test 数据库的所有表
    hive> SHOW TABLES IN sqoop_test;
    # 查看表中数据
    hive> SELECT * FROM sqoop_test.help_keyword;
    
  2. 可能出现的问题

    # 如果执行报错  
    java.io.IOException: 
    java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
    # 则需将 Hive 安装目录下 lib 下的 hive-exec-**.jar 放到 ${SQOOP_HOME}/lib。
    
    # 查看
    [root@tcloud lib]# ll hive-exec-*
    -rw-rw-r-- 1 root root 41068549 Apr 15  2020 hive-exec-3.1.2.jar
    # 复制
    [root@tcloud lib]#cp hive-exec-3.1.2.jar ${SQOOP_HOME}/lib
    

    5.2 export

    由于 Hive 的数据是存储在 HDFS 上的,所以 Hive 导入数据到 MySQL,实际上就是 HDFS 导入数据到 MySQL。

  3. 查看Hive表在HDFS的存储位置

    # 进入对应的数据库
    hive> use sqoop_test;
    # 查看表信息
    hive> desc formatted help_keyword;
    # Location 属性为其存储位置 
    # hdfs://tcloud:8020/user/hive/warehouse/sqoop_test.db/help_keyword
    
  4. 执行导出命令

MySQL 中的表需要预先创建:

CREATE TABLE help_keyword_from_hive LIKE help_keyword ;
# 需要注意的是 hive 中默认的分隔符为 \001
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hive \
--export-dir /user/hive/warehouse/sqoop_test.db/help_keyword \
-input-fields-terminated-by '\001' \       
--bindir /usr/local/sqoop/lib/ \
-m 1

6.MySQL导入数据到HBase

HBase数据库暂时没有安装,这里是之前验证过的笔记,当前环境未验证。这里只举例从 RDBMS 导入数据到 HBase,因为暂时没有命令能够从 HBase 直接导出数据到RDBMS。

5.1 import

  1. 导入数据

导入的 HBase 表需要预先创建:

# 查看所有表
hbase> list
# 创建表
hbase> create 'help_keyword_hbase', 'keywordInfo'
# 查看表信息
hbase> desc 'help_keyword_hbase'

将 help_keyword 表中数据导入到 HBase 上的 help_keyword_hbase 表中,使用原表的主键 help_keyword_id 作为 RowKey ,原表的所有列都会在 keywordInfo 列族下,目前只支持全部导入到一个列族下,不支持分别指定列族。

# 备注版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \                    # 待导入的表
--hbase-table help_keyword_hbase \        # hbase 表名称,表需要预先创建
--column-family 'keywordInfo' \            # 所有列导入到 keywordInfo 列族下
--hbase-row-key help_keyword_id \        # 使用原表的 help_keyword_id 作为 RowKey
--bindir /usr/local/sqoop/lib/ \
-m 1

# 可执行版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \
--hbase-table help_keyword_hbase \
--column-family 'keywordInfo' \
--hbase-row-key help_keyword_id \
--bindir /usr/local/sqoop/lib/ \
-m 1
  1. 导入验证

使用 scan 查看表数据:

hbase(main):008:0> scan 'help_keyword_hbase'

7.总结

至此,Sqoop的核心导入导出举例完成,这次遇到的问题和之前的不同,不同环境下执行的情况有所不同,java.lang.ClassNotFoundException: Class tableName not found 的问题在此版本下未能彻底解决,希望知道如何解决的小伙伴儿们能不吝赐教 :pray:

目录
相关文章
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
606 16
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
513 31
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
912 5
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
556 2
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
998 9
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
1065 3
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
757 1
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
508 3
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
861 1

热门文章

最新文章

推荐镜像

更多