hive和mysql的区别是什么?

hive和mysql的区别是什么?,第1张

hive和mysql的区别有:

1、查询语言不同:hive是hql语言,mysql是sql语句;

2、数据存储位置不同:hive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;

3、数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;

4、数据更新:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新;

5、索引:hive没有索引,因此查询数据的时候是通过mapreduce很暴力的把数据都查询一遍,也造成了hive查询数据速度很慢的原因,而mysql有索引。

   背景: hive中虽然有数据类型,但是int、double、string都可以在hive中存储为string类型,hive中String类型是没有长度限制的。hive中空值有三种情况,null(NULL值)、'\0'字符(hive自定义的空字符)、''(空字符)。

  由于hive在存储上存在以上情况,当把数据导入mysql会导致一下问题:

  1、字符长度太小的异常。由于mysql定义表结构的时候会定义字段长度值,当hive中数据的int、double、String长度大于mysql表定义的长度会出现mysql字段定义的数据长度太多而出现异常。

  2、int、double空数据异常。hive中int、double的空字符是有以上三种情况,会导致空值存储到mysql时出现类型不匹配而出现异常。

   解决办法:

  1、根据业务场景设定mysql字段长度。

  2、在数据导从hive导入mysql之前把空字符替换成默认字符。

(已安装则跳过)

yum -y install wget

安装这个包后,会获得两个mysql的yum repo源:

修改配置文件/etc/my.cnf,添加

然后,重启服务:

MYSQL就可以无密码登录了

删除配置文件my.cnf中的skip-grant-tables

重启服务: systemctl restart mysqld

使用密码登录: mysql -uroot -p

注:需要关闭centos防火墙

查看版本号:

mysql -V

启动mysql服务

systemcl start mysqld.service

停止mysql服务

systemctl stop mysqld.service

重启mysql服务

systemctl restart mysqld.service

查看mysql服务当前状态

systemctl status mysqld.service

设置mysql服务开机自启动

systemctl enable mysqld.service

停止mysql服务开机自启动

systemctl disable mysqld.service

rpm -qa|grep mariadb

rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

输出内容最后root@localhost:XXXXXXXX中的XXXX为初始密码

编写后保存


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6106187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存