Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 配置单元UDAF:将非Java配置单元UDAF的输出强制转换为映射_Python_Hive_User Defined Functions_Hiveql - Fatal编程技术网

Python 配置单元UDAF:将非Java配置单元UDAF的输出强制转换为映射

Python 配置单元UDAF:将非Java配置单元UDAF的输出强制转换为映射,python,hive,user-defined-functions,hiveql,Python,Hive,User Defined Functions,Hiveql,我正在试验用Python编写的Hive UDAFs,如: SELECT TRANSFORM(id, vtype, price) USING 'udaf.py' AS (vtype STRING, stats MAP<STRING,FLOAT>) FROM (SELECT * FROM foo CLUSTER BY vtype) AS TEMP_TABLE; 在上面的示例中,我尝试将其作为JSON字符串返回,HiveQL将其解释为键,并将null设置为值。

我正在试验用Python编写的Hive UDAFs,如:

SELECT TRANSFORM(id, vtype, price) USING 'udaf.py' 
  AS (vtype STRING, stats MAP<STRING,FLOAT>)         
  FROM (SELECT * FROM foo CLUSTER BY vtype) AS TEMP_TABLE;

在上面的示例中,我尝试将其作为JSON字符串返回,HiveQL将其解释为键,并将null设置为值。在彻底阅读HiveQL文档的同时,我还尝试了“平均值:1.0,变量:2.0”、“映射(平均值:1.0,变量:2.0)”、“平均值:1.0,变量:2.0”等方法,但没有任何效果。Cloudera上的Hive是否真的有内置的方法来实现这一点

配置单元表中映射的默认分隔符是映射键和映射值之间的
'\003'
(unicode 0x03),以及集合元素(其中映射是键值对的集合)之间的
\002
(unicode 0x02)

因此,在您的情况下,我将尝试使用

ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
可能有风险的是,在其他字段中有冒号

或者,您可以尝试使用默认分隔符输出地图

如果这不起作用,您可以从UDAF获取一个字符串,并使用


stru-to-map(text,,,:)

配置单元表中映射的默认分隔符是映射键和映射值之间的
'\003'
(unicode 0x03),以及集合元素之间的
\002
(unicode 0x02)(其中映射是键-值对的集合)

因此,在您的情况下,我将尝试使用

ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
可能有风险的是,在其他字段中有冒号

或者,您可以尝试使用默认分隔符输出地图

如果这不起作用,您可以从UDAF获取一个字符串,并使用


str_-to-u-map(text,,,:)

因此在Python脚本中输出
'mean\x031.0\x02variance\x032.0'
是有效的!非常感谢。还应该提到的是,
str_to_map
只对
map
有效,因此没有浮点键。因此在Python脚本中输出
'mean\x031.0\x02variance\x032.0'
是可行的!非常感谢。还应该提到的是,
str_to_map
仅适用于
map
,因此没有浮动键。