有關大數據框架的一些雜亂bug

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



待續。。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章