?? 背景:hive中雖然有數(shù)據(jù)類型,但是int、double囤热、string都可以在hive中存儲(chǔ)為string類型,hive中String類型是沒有長(zhǎng)度限制的获三。hive中空值有三種情況旁蔼,null(NULL值)、'\0'字符(hive自定義的空字符)疙教、''(空字符)棺聊。
??由于hive在存儲(chǔ)上存在以上情況,當(dāng)把數(shù)據(jù)導(dǎo)入mysql會(huì)導(dǎo)致一下問題:
??1贞谓、字符長(zhǎng)度太小的異常限佩。由于mysql定義表結(jié)構(gòu)的時(shí)候會(huì)定義字段長(zhǎng)度值,當(dāng)hive中數(shù)據(jù)的int裸弦、double祟同、String長(zhǎng)度大于mysql表定義的長(zhǎng)度會(huì)出現(xiàn)mysql字段定義的數(shù)據(jù)長(zhǎng)度太多而出現(xiàn)異常。
??2理疙、int晕城、double空數(shù)據(jù)異常。hive中int窖贤、double的空字符是有以上三種情況砖顷,會(huì)導(dǎo)致空值存儲(chǔ)到mysql時(shí)出現(xiàn)類型不匹配而出現(xiàn)異常。
?? 解決辦法:
??1赃梧、根據(jù)業(yè)務(wù)場(chǎng)景設(shè)定mysql字段長(zhǎng)度滤蝠。
??2、在數(shù)據(jù)導(dǎo)從hive導(dǎo)入mysql之前把空字符替換成默認(rèn)字符授嘀。