我们可以使用combination
Hive
和MapReduce
说:我有一个csv文件。我需要找到列的mean
,并用均值(replace null with mean
)替换空数据。
所以我们是否可以在驱动程序中编写hive query
(找到平均值)然后写一个mapreduce块来用null替换null。
哪种方式更好
答案 0 :(得分:2)
这是另一个可以使用( only hive )
解决的答案说你的csv输入是这样的:
firstname,secondname,score,group
维杰,库马尔,123,CSE
萨蒂什南比亚,巴布,,它
库马尔nagendra,200,EIE
阿尼尔,巴布,,它
然后应用这样的查询(我运行它):
hive> from students s join (select avg(score)as avg from students) a
> select s.firstname,
> case
> when s.score="" or s.score=NULL then cast(avg AS string)
> else s.score
> end as new_score ;
输出:
行
firstname new_score
vijay 123
苦恼161.5
kumar 200
anil 161.5
所花费的时间:67.059秒,摘录:4行
答案 1 :(得分:0)
根据我的观点,
最好只编写mapreduce代码。(使用job1查找均值,然后只映射job2来替换哪个很容易)。蜂巢与MR的组合会有点混乱(原因是你要在一个代码中编写,必须将它运送到群集节点一个jar,我们不能说这些任务将在哪里运行,我的意思是hive命令执行的地方点ll)。
希望这会有所帮助。谢谢:))