请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

启动spark-shell遇到两个报错

Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
org.datanucleus.exceptions.NucleusDataStoreException: Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
18/07/31 13:48:04 ERROR Datastore: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 3072 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 3072 bytes

一个是mysql表长度不够,还有个是无法自动创建表

正在回答 回答被采纳积分+3

3回答

陈素素 2019-05-28 14:31:11
您好, 我启动spark-shell时报这个错误:
19/05/27 23:27:14 ERROR Datastore: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
跟您遇到的基本一样,我想请教一下这句命令 :alter database sparksql character set latin1; 在哪儿执行啊?


0 回复 有任何疑惑可以回复我~
  • 这是元数据信息,当然是MySQL里面执行
    回复 有任何疑惑可以回复我~ 2019-05-28 14:57:42
提问者 被吊打的学渣 2018-08-13 00:06:27

自问自答一波。

记住如果你已经在mysql创建了作为hive元数据库的‘sparksql’数据库(这个是课程中起的名字)。一定要修改这个数据库的字符集,而不是在在mysql数据库系统文件中修改,比如在

/etc/my.cnf

中修改是毫无意义的,它只会对你之后创建的数据库的字符集有影响,而不会改变之前。所以要执行下面这个命令才有效。

alter database sparksql character set latin1;


0 回复 有任何疑惑可以回复我~
  • 是的,只对后续的有效
    回复 有任何疑惑可以回复我~ 2018-08-13 00:07:15
Michael_PK 2018-08-12 23:31:21

MySQL的字符集不对,你改成lin1可能就OK。这个问题解决办法问答区有,你可以搜下

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信