这是场景:
假设您有一个存储 Twitter 数据的 Hive 表。
假设它有 5 列。一列是文本数据。
现在如何添加第六列来存储 Twitter 文本数据情绪分析中的情绪值。我计划使用情绪分析 API,例如 Sentiment140 或 Viralheat。
如果有关于如何在 Hive 中实现“派生”列的提示,我将不胜感激。
谢谢。
最佳答案
不幸的是,虽然 Hive API 允许您向表中添加新列(使用 ALTER TABLE foo ADD COLUMNS (bar 二进制)),但这些新列将为 NULL 并且无法填充。将数据添加到这些列的唯一方法是清除表的行并从新文件加载数据,该新文件具有该新列的数据。
回答你的问题:在 Hive 中你不能。要执行您建议的操作,您必须有一个包含 6 列的文件,其中第六列已包含情绪分析数据。然后可以将其加载到 HDFS 中,并使用 Hive 进行查询。
编辑:刚刚尝试了一个示例,在添加新列(见上文)后,我将表导出为 .csv,并将其弹出到 M$ Excel 中,我可以在其中对表值执行函数。添加函数后,我只需保存并上传 .csv,并从中重建表格。不确定这是否对您特别有帮助(因为不太可能在 Excel 中完成情绪分析),但可能对其他只想在 Hive 中计算列的人有用。
引用文献:
https://cwiki.apache.org/Hive/gettingstarted.html#GettingStarted-DDLOperations
http://comments.gmane.org/gmane.comp.java.hadoop.hive.user/6665
关于hadoop - Hive:如何拥有存储来自情绪分析 API 的情绪值的派生列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425623/