为什么HIVE必须用“”分割字符串? 【b4 0.11.0是可以,0.11.0以后可以指定】

问题描述 投票:0回答:1

hive 表中有一些字符串,我使用转换方法替换一些字符,我的映射器脚本如下所示:

<?php
$strFrom = "\7";
$strTo = "\1"; // "|" it works well
$fd = fopen("php://stdin", "r");
while($line = fgets($fd)){
    $outStr = str_replace($strFrom, $strTo, $line);
    print $outStr;
}
fclose($fd);

我的 hive sql 是这样的:

select transform (value)
using 'home/php/bin/php -c home/php/etc/php.ini replace.php'
as (v1 string)
from test_tbl

实际上我尝试将字符串从“”替换为“”,但我发现它似乎替换正确,但它只输出第一列。像这样的一个输入:

a\7b\7c\7d

然后输出如下:

a

是的,只有一栏!

如果我将其替换为“|”,则会输出:

a|b|c|d

所以我很困惑,为什么 hive 必须用“”分割字符串?我怎样才能禁止它?我只想得到:

a\1b\1c\1d
    
php sql string hadoop hive
1个回答
1
投票
我在

这里找到了答案。

  • 写入文件系统的数据被序列化为文本,列由 ^A 分隔,行由换行符分隔。

  • 从 Hive 0.11.0 开始,可以指定使用的分隔符,在早期版本中它始终是 ^A 字符 ( )

感谢所有看到这个问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.