如何在 Mapreduce 中生成 UUID?
How to generate UUID in Mapreduce?
我想编写一个 MapReduce java 程序,我需要为 csv/txt 文件中的一组数据创建 UUID。数据将是具有一组行和列的客户数据。输入 csv 位于 HDFS 目录中。
只需要使用Mapreduce 生成UUID。
我有一个包含 a、b 和 c 列且有 5 行的输入文件。
我需要一个带有 5 行 UUID 的 d 列,即 5 个不同的 UUID
我该怎么做?
这是 Mapper class 的代码:
public class MapRed_Mapper 扩展映射器{
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
Text uuid = new Text(UUID.randomUUID().toString());
context.write(key, uuid);
}
}
Mapreduce java 方法
1) 从文本文件
读取映射器class映射方法中的行
2) 在 reduce 方法中添加如下所示的 UUID 作为额外列(使用单个 reducer 将 csv 减少为额外列)
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
。默认的键/值分隔符是制表符 character.Change 通过在您的驱动程序中设置 属性 mapred.textoutputformat.separatorText
分隔符。
conf.set("mapred.textoutputformat.separatorText", ",");
Spark 方法(因为你添加了 spark 标签,我想在下面给出指针):
SO 中已有答案,请参阅。
然后你可以按照下面的方法转换成csv格式。
df.write.format("com.databricks.spark.csv").save(filepath)
也许我没听懂问题,但您可以通过执行以下操作为每次调用 map 生成一个 UUID:
@Override
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
context.write(key, new Text(UUID.randomUUID().toString());
}
我想编写一个 MapReduce java 程序,我需要为 csv/txt 文件中的一组数据创建 UUID。数据将是具有一组行和列的客户数据。输入 csv 位于 HDFS 目录中。
只需要使用Mapreduce 生成UUID。 我有一个包含 a、b 和 c 列且有 5 行的输入文件。 我需要一个带有 5 行 UUID 的 d 列,即 5 个不同的 UUID
我该怎么做?
这是 Mapper class 的代码:
public class MapRed_Mapper 扩展映射器{
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
Text uuid = new Text(UUID.randomUUID().toString());
context.write(key, uuid);
}
}
Mapreduce java 方法
1) 从文本文件
读取映射器class映射方法中的行2) 在 reduce 方法中添加如下所示的 UUID 作为额外列(使用单个 reducer 将 csv 减少为额外列)
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
。默认的键/值分隔符是制表符 character.Change 通过在您的驱动程序中设置 属性 mapred.textoutputformat.separatorText
分隔符。
conf.set("mapred.textoutputformat.separatorText", ",");
Spark 方法(因为你添加了 spark 标签,我想在下面给出指针):
SO 中已有答案,请参阅。
然后你可以按照下面的方法转换成csv格式。
df.write.format("com.databricks.spark.csv").save(filepath)
也许我没听懂问题,但您可以通过执行以下操作为每次调用 map 生成一个 UUID:
@Override
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
context.write(key, new Text(UUID.randomUUID().toString());
}