具有python变换功能的Hive:“无法识别’变换’附近的输入”错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了具有python变换功能的Hive:“无法识别’变换’附近的输入”错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1714字,纯文字阅读大概需要3分钟。
内容图文
![具有python变换功能的Hive:“无法识别’变换’附近的输入”错误](/upload/InfoBanner/zyjiaocheng/809/6581dbde7bdd4044a00f1162c789c67e.jpg)
我有一个Hive表,用于跟踪在进程的各个阶段中移动的对象的状态.该表如下所示:
hive> desc journeys;
object_id string
journey_statuses array<string>
以下是记录的典型示例:
12345678 ["A","A","A","B","B","B","C","C","C","C","D"]
表中的记录是使用Hive 0.13的collect_list生成的,并且状态有一个订单(如果订单不重要,我会使用collect_set).对于每个object_id,我想缩短旅程以按照它们出现的顺序返回旅程状态.
我写了一个从stdin读取的快速Python脚本:
#!/usr/bin/env python
import sys
import itertools
for line in sys.stdin:
inputList = eval(line.strip())
readahead = iter(inputList)
next(readahead)
result = []
for id, (a, b) in enumerate(itertools.izip(inputList, readahead)):
if id == 0:
result.append(a)
if a != b:
result.append(b)
print result
我打算在Hive转换调用中使用它.它似乎在本地运行时工作:
$echo '["A","A","A","B","B","B","C","C","C","C","D"]' | python abbreviate_list.py
['A', 'B', 'C', 'D']
但是,当我添加文件并尝试在Hive中执行时,会返回错误:
hive> add file abbreviateList.py;
Added resource: abbreviateList.py
hive> select
> object_id,
> transform(journey_statuses) using 'python abbreviateList.py' as journey_statuses_abbreviated
> from journeys;
NoViableAltException( ... wall of Java error messages ... )
FAILED: ParseException line 3:2 cannot recognize input near 'transform' '(' 'journey_statuses' in select expression
你能看出我做错了什么吗?
解决方法:
显然,您无法选择其他不在转换中的字段(在您的示例中为object_id).这个其他的SO问题似乎间接解决了这个问题:
How can select a column and do a TRANSFORM in Hive?
理论上,您可以修改Python以接受object_id作为输入参数,如果需要将其包含在输出中,则将其作为另一个输出字段的直通.
内容总结
以上是互联网集市为您收集整理的具有python变换功能的Hive:“无法识别’变换’附近的输入”错误全部内容,希望文章能够帮你解决具有python变换功能的Hive:“无法识别’变换’附近的输入”错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。