我正在尝试执行此查询:
add FILE /home/user1/test/test_udf.py;
SELECT a.hash_code, col2
FROM (SELECT transform (col2, col3) using 'python test_udf.py' as hash_code, col2
FROM sample_table) a ;
我能够使用udf成功生成hash_code,但另一列(col2)将填充为NULL
。
示例输出:
sjhfshhalksjlkfj128798172jasjhas NULL
ajsdlkja982988290819189089089889 NULL
jhsad817982mnsandkjsahj982398290 NULL
答案 0 :(得分:1)
我知道你的HiveSql有什么问题。
在transform (col2, col3) using 'python test_udf.py' as hash_code, col2 FROM sample_table
中,hash_code, col2
的值将从transform (col2, col3)
的返回值进行解析。
clo2
是从transform (col2, col3)
解析的,NULL
。
我阅读了Transform doc,获取了相关信息,如下所示。
转换/映射减少语法
SELECT TRANSFORM '(' expression (',' expression)* ')'
(inRowFormat)?
USING 'my_reduce_script'
( AS colName (',' colName)* )?
(outRowFormat)? (outRecordReader)?
您最好不要将transform
与其他select
混合,因为语法不会支持。
<强>更新强>
有一个黑客可以做你想做的事情:让test_udf.py
返回hash_code\t col2
。
所以你可以从中解析hash_code, col2
。这可以解决您的问题。