当有外来字符时,为什么它没有正确填充空格字符?

时间:2015-09-23 23:55:53

标签: hadoop hive data-warehouse

我的目标是导出具有固定宽度列的文件。我有以下HQL:

insert overwrite table destination_table
select concat(rpad(p.artist_name,40," "),rpad(p.release_name,40," "))
from source_table;

" destination_table"是一个写入文件的外部表。当artist_name和release_name包含普通英文字符时没问题,结果如下:

paulo kuong[29 space characters]I am terribly stuck album

我有40个字符固定宽度列。但是,当字符串不是英语时,我得到了:

장재인[31 space characters]다른 누구도 아닌 너에게       

假设是37个空格字符。 LPAD似乎无法正确填充空格。当我做"长度(장재인)"它返回3个字符..所以在HIVE中有一些奇怪的lpad和rpad

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为singleton按预期工作。根据文件,

rpad

因此,在您的情况下,rpad(string str, int len, string pad) #Returns str, right-padded with pad to a length of len 的长度应为40.

简而言之,장재인[31 space characters]的长度应为9。

我在장재인进行了检查,然后python的长度确实是9。

장재인