hadoop - 有异物时为什么不能正确填充空格?

标签 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似乎无法正确填充空格。当我执行“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/

相关文章:

mongodb - 有什么方法可以将大型机文件与 Mongodb 或任何 Hadoop 组件集成

shell - Hive ALTER 命令删除值早于 24 个月的分区

apache-spark - 如何在使用 Spark 数据帧写入时自动计算 numRepartition

hadoop - 用 yarn 进行星火聚类

java - tools.jar 的文件位置?

sql - 星型模式中我的时间维度表的属性

java - 如何解决 hive 中的执行错误?

amazon-ec2 - 一个大型数据仓库系统的推荐

hadoop - HBase 区域服务器在 tsv 导入时不断崩溃

sql - 使用时间轴列作为 Hive 分区字段时出现异常