如何在mapreduce中生成uuid?

wgxvkvu9  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(415)

我想写一个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);
}

}

rjjhvcjd

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() 方法。

UUID uuid = UUID.randomUUID();
    String randomUUIDString = uuid.toString();

    System.out.println("Random UUID String = " + randomUUIDString);
   // System.out.println("UUID version       = " + uuid.version());
   // System.out.println("UUID variant       = " + uuid.variant());

对于csv生成:
使用 TextOutputFormat . 默认的键/值分隔符是制表符。请通过设置属性更改分隔符 mapred.textoutputformat.separatorText 你的司机。

conf.set("mapred.textoutputformat.separatorText", ",");

spark方法(由于您添加了spark标记,我想在下面给出一个指针):

有已经存在的答案,所以,请看。
添加-a-new-column-to-a-dataframe-new-column-i-want-it-to-be-a-uuid-generator
然后你可以做下面的转换成csv格式。

df.write.format("com.databricks.spark.csv").save(filepath)
cyvaqqii

cyvaqqii2#

也许我没有得到这个问题,但是您可以通过执行以下操作为每个要Map的调用生成一个uuid:

@Override
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
    context.write(key, new Text(UUID.randomUUID().toString());
}

相关问题