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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【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:

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
50 3
|
6月前
|
关系型数据库 MySQL 分布式数据库
Hbase与MySQL对比,区别是什么?
Hbase与MySQL对比,区别是什么?
263 2
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
82 0
|
3月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
91 1
|
3月前
|
SQL 存储 关系型数据库
从Hive建表语句到MySQL的转换
【8月更文挑战第11天】
207 7
|
4月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
186 0
|
5月前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
|
6月前
|
SQL 分布式计算 关系型数据库
使用 Spark 抽取 MySQL 数据到 Hive 时某列字段值出现异常(字段错位)
在 MySQL 的 `order_info` 表中,包含 `order_id` 等5个字段,主要存储订单信息。执行按 `create_time` 降序的查询,显示了部分结果。在 Hive 中复制此表结构时,所有字段除 `order_id` 外设为 `string` 类型,并添加了 `etl_date` 分区字段。然而,由于使用逗号作为字段分隔符,当 `address` 字段含逗号时,数据写入 Hive 出现错位,导致 `create_time` 值变为中文字符串。问题解决方法包括更换字段分隔符或使用 Hive 默认分隔符 `\u0001`。此案例提醒在建表时需谨慎选择字段分隔符。
112 6