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
待續。。。。