大数据常见的错误总结

一、这个是的典型的NoClassDefFoundError的问题,notfound的错误肯定是少包或者少依赖的原因。
(这个错误没有遇到过也没试过)
这里是官网上的说明

https://spark.apache.org/docs/latest/hadoop-provided.html
在这里插入图片描述
具体执行办法是:
在spark-evn.sh中添加
这里实际上就是执行一条hadoop的命令,将hadoop的classpath引入一下
export export SPARK_DIST_CLASSPATH= ( ( ({HADOOP_HOME}/bin/hadoop classpath)

二、hive数据表的压缩问题(未果)**

背景:
hive 表的数据发现数据有重复,想对其进行group by 操作之后再重新插入到这个表对应的分区里。
这个hive表采用的是parquet文件,snappy压缩。下面是没group by 的数据量。
在这里插入图片描述
在源代码的后面insert 之前对整个进行了 group by,惊喜发生了,数据居然变成了那么多。什么都没改,参数也没改,数据体量是翻倍地增加啊。。。。。一度怀疑是压缩是失效了。但是始终没有找到对应方案。
在这里插入图片描述

三、hive连接元数据库的问题
在这里插入图片描述
查看报错日志:
NestedThrowablesStackTrace:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘OPTION SQL_SELECT_LIMIT=DEFAULT’ at line 1

1、原因一:hive的元数据库修改用户密码,CDH的密码没有修改。
2、 原因二:Mysql 的连接驱动“ mysql-connector-java-5.1.26-bin.jar ”缺失。该驱动 需要同时存在于 J A V A H O M E / l i b / 目 录 下 、 JAVA_HOME/lib/目录下、 JAVAHOME/lib/HIVE_HOME/lib/目录下。并且设置755权限
3、原因三: mysql 跨大版本升级的时候报错。
https://www.cnblogs.com/sunt9/p/6670349.html
针对第三种的解决方案:
需先备份mysql 原来的数据文件,一般情况下 mysql 数据文件物理位置: /var/lib/mysql
(或者查找 find / -name .ibd) 就能找到路径
1):下载mysql 版本 mysql-5.7.9-1.el6.x86_64.rpm-bundle.tar ,解压并把里面的rpm包 全部放入yum 源 rpm集中存放地
2):关闭CDH 集群(页面管理台), 在管理节点关闭scm服务,关闭mysql 服务
service cloudera-scm-server stop
service mysqld stop
3): 为稳妥,用rpm 卸载命令,将mysql5.1.17的包一个一个卸载
rpm -e --nodeps xxxxxx(通过yum list |grep mysql5.1.17 查看多少包)
4): 安装mysql5.7.9
yum install mysql mysql-

5):启动mysql 到此位置启动CDH 将报错,hive连接数据库 某某表不存在
需执行操作 :mysql_upgrade -uroot -p passwd
此时 再连hive 会报 NestedThrowablesStackTrace:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘OPTION SQL_SELECT_LIMIT=DEFAULT’ at line 1
(更详细说明 http://www.th7.cn/db/mysql/201703/229084.shtml)
set option SQL_SELECT_LIMIT……已经过时。并且在5.6之后该语法就已经被删除了。
然而用的驱动版本较低的情况下,还是使用以前的set指令导致出错。
解决:将驱动版本升级,尽量驱动版本和数据库版本对应,这个问题切换为5.1.22以上即可。
数据库驱动版本和数据库版本是两个概念,数据库版本是安装的什么版本,驱动版本是用一种方式(比如jdbc方式)访问数据的版本,这个和对应的访问方式有关系。
6):下载 mysql-connector-java 5.1.46(高于mysql-connector-java 5.1.22的都可以)
解压缩 并提取 mysql-connector-java 5.1.46-bin.jar 到任意路径下 比如 /mnt/
执行: ln -s /mnt/mysql-connector-java 5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
(提前删除 /user/share/java/ 中的mysql-connector-java 相关包和链接)
7):升级完毕 ,重启scm 服务,链接hive 回归正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值