有关大数据框架的一些杂乱bug

来源:互联网 发布:带数字的域名 编辑:程序博客网 时间:2024/05/22 08:06

1、数据分片

用scala分片每行数据时,遇到最后几个字段为空值,需要用到split函数中的参数arg1

split(arg0:String, arg1:Int)

1、当arg1 > 0时,它限制arg0最多成功匹配arg1.length() -1次,也就是说字符串最多被分成arg1个子串。此时split会保留分割出的空字符串(当两个arg0连续匹配或者arg0在头尾匹配,会产生空字符串)。

比如:

scala> "-a-b-c--".split("-", 6)
res0: Array[String] = Array("", a, b, c, "", "")

2、当arg1 = 0时,不保留末尾的空字符串,即split(arg0:String)。

比如:

scala> "-a--b--c---".split("-", 0) 

res1: Array[String] = Array("", a, "", b, "", c)

3、当arg1 < 0时,split函数会尽可能多的匹配arg0,并且保留末尾的空字符串。

比如:

scala> "-a--b--c-".split("-", -1)
res2: Array[String] = Array("", a, "", b, "", c, "")


2、eclipse+python+hive

在根据网上教程完成之后,还报错,需要配置hive-site.xml中一个参数

<name>hive.server2.authentication</name>

<value>NOSASL</value>

另外connect时改变authMechanism="NOSASL"


3、com.MySQL.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Specified key was too long; max key length is 767 bytes(很纠结的bug,请一定要按照以下顺序去调整)

1、配置hive,不设定编码为utf-8,让hive自动新建mysql中的数据库hive(重点)。

2、查看mysql中hive库已经创建好,查看hive库的编码是latin1。

3、修改hive库为utf-8,修改hive库中的所有的表为utf-8,还要修改hive库中所有表的所有列为utf-8,这是mysql的默认编码为utf-8。

即:改my.ini文件增加以下几条,重启mysql service mysqld restart

[mysql]

default-character-set=utf-8

[mysqld]

character-set-server=utf-8



待续。。。。


原创粉丝点击