【问题标题】:hive UDF on data with delimiters带分隔符的数据上的配置单元 UDF
【发布时间】:2017-06-02 00:06:54
【问题描述】:

我正在使用 python 和 hive UDF 来取消透视数据。 'python.py' unpivots 数据,但我想在 Hive 上运行它。我无法处理包含空格和句点的项目。

有什么好办法绕过它吗?

我的起始表如下:

商店物品风味 -------- ----- ------------ 1个纸杯蛋糕巧克力 1个蛋糕流行红色天鹅绒 1个香草冰淇淋 1个饼干/糖果柠檬 2 纸杯蛋糕红丝绒 2个蛋糕汽水香草 2 冰淇淋巧克力 2块饼干/糖果巧克力

我使用内码获取:

商店 纸杯蛋糕 蛋糕棒棒糖 冰淇淋 饼干/糖果 -------- ------------ ------------ ----------- -------- --------- 1个巧克力红丝绒香草柠檬 2红色天鹅绒香草巧克力巧克力

使用:

SELECT TRANSFORM(store, item, flavor) USING ‘python.py’ 
AS (store, cupcake, cake pops, ice cream, cookies/candies) FROM mytable;

给出错误:“编译语句时出错:FAILED: ParseException line 3:25 mismatched input 'pops' expecting ) near 'cake' in transform Clause”

【问题讨论】:

  • 不清楚你的python代码是做什么的
  • 限定别名,例如`蛋糕汽水`

标签: hadoop hive udf


【解决方案1】:

尝试使用反引号或单引号。

如果您的 udf 用空格定义列名,我更喜欢反引号。但是,在这种情况下,我猜你需要使用单引号。

SELECT TRANSFORM(store, item, flavor) USING ‘python.py’ AS (store, cupcake, 'cake pops', ice cream, cookies/candies) FROM mytable;

【讨论】:

  • 谢谢@hiropon。我的 'python.py' 实际上做了反透视,但我想在 Hive 上运行它。我编辑了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多