我想写一个mapreducejava程序,其中我需要为csv/txt文件中的一组数据创建uuid。数据将是一个包含行和列的客户数据集。输入csv位于hdfs目录中。
只需要使用mapreduce生成uuid。我有一个输入文件,它有a,b和c列,有5行。我需要一个带有5行uuid的d列,即5个不同的uuid
我该怎么办?
以下是mapper类的代码:
公共类mapper\u mapper扩展mapper{
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
Text uuid = new Text(UUID.randomUUID().toString());
context.write(key, uuid);
}
}
2条答案
按热度按时间rjjhvcjd1#
mapreduce java方法
1) 从文本文件中读取Map器类Map方法中的行
2) 在reduce方法中将uuid添加为extra column,如下所示(使用single reducer将csv减少为extracolumn)
3) 把它发射出去
context.write
java.util.UUID
,从jdk 5开始提供。创建随机uuid(通用唯一标识符)。
为了获得生成的随机字符串的值,我们需要调用
UUID.toString()
方法。对于csv生成:
使用
TextOutputFormat
. 默认的键/值分隔符是制表符。请通过设置属性更改分隔符mapred.textoutputformat.separatorText
你的司机。spark方法(由于您添加了spark标记,我想在下面给出一个指针):
有已经存在的答案,所以,请看。
添加-a-new-column-to-a-dataframe-new-column-i-want-it-to-be-a-uuid-generator
然后你可以做下面的转换成csv格式。
cyvaqqii2#
也许我没有得到这个问题,但是您可以通过执行以下操作为每个要Map的调用生成一个uuid: