一.引言
hive 执行如下 insert 插入语句后将数据从 RCFile 格式转换为 Text 并导入 Hdfs:
function insertData() {
hive -e "
insert overwrite directory '$output'
select col_1,'\t',col_2 from $table where dt='$day' and num > 10000
"
}
但是解析忽略了 ^A 默认符,导致后续任务判断失效。
二.原因分析
table 的 hive 分隔符为默认分割符 ^A
vim 下可显示:
文本格式显示:
但是 print 时无法显示,col_1 "\t" col_2 进行 split 划分时需要注意分隔符:
取第一位正确操作:
x.split("\001")(0)
错误操作:
因为这个不可视的问题折腾了好几次代码,蓝瘦了,以后要注意警惕 hive 的默认分割符!