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中一个参数
另外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
待续。。。。