我的目标是导出具有固定宽度列的文件。我有以下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似乎无法正确填充空格。当我执行“length(장재인)”时,它将返回3个字符。.因此,在HIVE中,lpad和rpad发生了一些奇怪的事情
任何的想法?
最佳答案
我以为rpad
可以正常工作。根据文件,
rpad(string str, int len, string pad)
#Returns str, right-padded with pad to a length of len
因此,在您的情况下,
장재인[31 space characters]
的长度应为40。简而言之,
장재인
的长度应为9。我检查了
python
,然后장재인
的长度确实为9。>>> a = '장재인'
>>> len(a)
9
关于hadoop - 有异物时为什么不能正确填充空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751298/