使用 ArrayWritable 进行序列化似乎以一种有趣的方式工作

2023-11-26

我正在与ArrayWritable,在某些时候我需要检查 Hadoop 如何序列化ArrayWritable,这是我通过设置得到的job.setNumReduceTasks(0):

0    IntArrayWritable@10f11b8
3    IntArrayWritable@544ec1
6    IntArrayWritable@fe748f
8    IntArrayWritable@1968e23
11    IntArrayWritable@14da8f4
14    IntArrayWritable@18f6235

这是我正在使用的测试映射器:

public static class MyMapper extends Mapper<LongWritable, Text, LongWritable, IntArrayWritable> {

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        int red = Integer.parseInt(value.toString());
        IntWritable[] a = new IntWritable[100];

        for (int i =0;i<a.length;i++){
            a[i] = new IntWritable(red+i);
        }

        IntArrayWritable aw = new IntArrayWritable();
        aw.set(a);
        context.write(key, aw);
    }
}

IntArrayWritable取自javadoc中给出的示例:数组可写.

import org.apache.hadoop.io.ArrayWritable;
import org.apache.hadoop.io.IntWritable;

public class IntArrayWritable extends ArrayWritable {
    public IntArrayWritable() {
        super(IntWritable.class);
    }
}

我实际上检查了 Hadoop 的源代码,这对我来说毫无意义。ArrayWritable不应该序列化类名,并且 100 的数组不可能IntWritable可以使用 6/7 十六进制值进行序列化。该应用程序实际上似乎工作得很好,并且减速器反序列化了正确的值...... 怎么了?我缺少什么?


你必须覆盖默认值toString() method.

它被称为TextOutputFormat创建人类可读的格式。

尝试以下代码并查看结果:

public class IntArrayWritable extends ArrayWritable {
    public IntArrayWritable() {
        super(IntWritable.class);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (String s : super.toStrings())
        {
            sb.append(s).append(" ");
        }
        return sb.toString();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ArrayWritable 进行序列化似乎以一种有趣的方式工作 的相关文章

  • 深入理解Java中的Volatile

    Java是否允许输出1 0 我已经对其进行了非常深入的测试 但无法获得该输出 我只得到1 1 or 0 0 or 0 1 public class Main private int x private volatile int g Exec
  • FOP apache - 支持希伯来字母

    过去几天我一直在调查 FOP apache 中对希伯来字母的支持 用于生成 PDF 文件的项目 我看到以前有一个问题 我不太明白是否解决了 如果有支持 有人可以向我展示 重定向到简单的示例 为我提供带有希伯来字母的 XSL FO 文件 当使
  • 如何将DEX反编译成Java源代码?

    如何将Android DEX VM字节码 文件反编译成相应的Java源代码 这很容易 获取这些工具 dex2jar https github com pxb1988 dex2jar将 dex 文件转换为 jar 文件 jd gui http
  • n 个素数之和 java,困惑

    我读过几篇关于这方面的文章 我什至在一次考试中这样做过 但是是在 vb net 中 它工作得很好 但是当我尝试执行我的程序时 Eclipse 只是不停地运行 否则它会给我错误的答案 这是我的第四次尝试 我需要将前 n 个素数相加 因此我检查
  • spring依赖注入会创建单例对象吗?

    spring内部是如何管理这些对象的呢 单例对象什么时候创建和销毁 默认情况下 Spring bean 基本上是单例的 Spring 将为每个类创建一个实例 并且通常会在 Spring 初始化时执行此操作 然而 这几乎是无限可定制的 Spr
  • wsimport Xauthfile 错误

    我正在尝试为我们公司网络外部的受 SSL 保护的 Web 服务 在 Microsoft Biztalk 上 生成客户端 也称为消费者 所需的 java 帮助类 我们只能通过代理访问它 并且无法更改 Web 服务本身的任何内容 这是我提供给
  • 如何在 Spring Data MongoDB 中仅返回查询的特定字段?

    我们如何在 Spring Data Mongo 中选择特定字段 我尝试了以下操作 但我得到了强制转换异常Foo to String Using Query Query value path 0 fields path 0 String fi
  • 从java管理unix进程的最佳方法是什么?

    我正在寻找一些简单的任务 例如列出用户的所有正在运行的进程 或者通过pid等杀死特定进程 来自Java的基本unix进程管理 有没有相对成熟且有文档的库 我可以从 JVM 运行外部命令 然后解析标准输出 错误 但这似乎需要大量工作 而且一点
  • Java 1.6 和 Desktop.open() 的问题

    我一直在使用 Destop open 在 Windows 计算机 Vista 和 XP 上启动 pdf 查看器 并且大多数都工作得很好 但是 在一台 XP 计算机上 该调用不起作用 只是返回而不抛出任何异常 并且查看器不会启动 据我所知 在
  • 如何将背景图像设置到 JPanel 中的 JTextArea

    我想在JTextArea 我在谷歌上查找过 但没有结果 背景可能是一个标志 我也想知道如何设置背景的分辨率 我的包中只有一门课 我有一个 MySQL 连接器驱动程序作为参考库 我的工作台是 Eclipse 使用 Fat jar 插件导出 j
  • 正则表达式忽略引号之间的文本

    我有一个正则表达式 它是 s 这用于分割字符串 但我不想让它分开 如果它在引号中 我不会使用 split 而是使用 Pattern 和 Matcher A demo import java util regex Matcher import
  • Java 似乎找不到我的本机库

    我正在尝试从我的 jar 中运行我的程序 名为 PViz jar 该 jar 位于一个目录中 其中包含所有依赖的 jar 以及它们所依赖的 so 文件 我使用的是 Mac OS X 当我运行此命令时 java cp PViz jar pvi
  • 请求的操作:声明您的广告 ID 权限

    今天我收到这封电子邮件 去年 7 月 我们宣布了广告政策变更 以帮助加强 安全和隐私 我们对使用的标识符添加了新的限制 针对儿童的应用程序 当用户选择删除他们的 广告 ID 以选择退出个性化广告 如果满足以下条件 开发人员将收到一串零而不是
  • java.util.Currency.getInstance 抛出 IllegalArgumentException

    我只是想尝试一下java util Currency 但对于少数货币代码来说它让我困惑java lang IllegalArgumentException 这是我的简单代码 java util Currency c java util Cu
  • 如何安装“Android 支持库”以将 Gluon Mobile 应用程序部署到 Android?

    我想使用 Gluon Mobile 框架开发一个 Android 应用程序 我在 Netbeans IDE 中安装了 Gluon 插件 创建了一个示例项目并成功构建了它 现在我想将该应用程序部署到 Android 设备 我指的是在线文档 1
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • Gradle 将多个依赖项提取到不同的目录

    我正在尝试将多个依赖项提取到不同的目录中 我尝试了以下方法 configurations cppDependencies dependencies cppDependencies com group artifact1 1 0 cppDep
  • 异常中的错误代码与异常层次结构

    您认为在异常中使用错误代码来指定错误类型可以吗 请看一下这段代码 public class MyException extends Exception public static final String ERROR CODE INVALI
  • JavaFX ComboBox - 显示文本但在选择时返回 ID

    我有一个包含机场的数据库表 每个机场都有一个名称和一个 ID 在 JavaFX 中我有一个表单 其中包含ComboBox 组合框需要显示所有机场名称 并且在提交表单时需要将机场的 ID 插入数据库 而不是其名称 但我并没有真正弄清楚解决方案
  • 如何处理 Sonarlint java:S2259 (空指针不应取消引用)

    if res getBody null res getBody getServiceResult null return 在上面的代码中 sonarlint 抱怨说 SonarLint 可能会抛出 NullPointerException

随机推荐

  • 如何在不平滑任何内容的情况下放大 UIImage?

    我想以这样的方式放大 UIImage 以便用户可以非常清晰地看到 UIImage 中的像素 当我将其放入 UIImageView 并放大变换矩阵时 UIImage 会出现抗锯齿和平滑效果 有没有办法通过简单地重复每一行和每一列来获得更大的像
  • 为什么枚举需要显式转换为 int 类型?

    这样做不会丢失数据 那么为什么必须显式地将枚举转换为整数呢 如果它是隐式的 那么当您有更高级别的方法时 例如 PerformOperation OperationType Silent type where PerformOperation
  • HttpResponse 不包含 Dot Net Core 的 AddHeader 的定义

    将项目移至 Net Core 时 AddHeader抛出错误 错误 CS1061 HttpResponse 不包含定义 AddHeader 且没有扩展方法 AddHeader 接受第一个 可以找到 HttpResponse 类型的参数 您是
  • 哪些操作系统不会在程序退出时释放内存?

    这个问题让我很好奇 像这样的问题总是得到诸如 它通常是安全的 但你不应该假设操作系统会为你做这件事 这样的答案 这对我来说听起来是个好建议 但我想知道 是否有任何积极开发 发布 的不执行此操作的操作系统 这是恐龙时代 80年代 就被修复的东
  • 仅返回 mongo 投影中的数组值

    有没有办法只返回 mongodb 投影中属性的值 例如 我有一个文档 其中有一个属性 其值为数组 我希望查询的返回对象只是数组 而不是property 例子 文档 db test insert name Andrew attributes
  • 如何在Android中播放在线视频?

    我正在 Android 中开发一个示例媒体播放器应用程序来播放在线视频 我已经开发了一些代码来播放视频 它可以很好地播放 SD 卡中的视频 但我在这方面面临两个问题 1 当我打开在线视频应用程序时 它会显示视频 但不会播放视频 一段时间后
  • Android XML DOM 解析中如何解析同名标签?

    我无法在这里解析我的 XML 它仅返回 项目 My AndroidActivity由于太大而无法显示 这就是为什么我只展示了负责解析的部分 我的 XML 看起来像这样
  • 使用 pyparsing 的递归表达式

    我试图弄清楚如何执行左关联表达式 其中递归 不包含在任何内容中 表达式是可能的 例如 我想做 expr OP expr 解析 2 个操作 例如1 x 2 x 3 into expr OP expr OP expr result 如果我试图阻
  • connection.setRequestProperty 和显式写入 urloutputstream 相同吗?

    URL url new URL http www example com comment HttpURLConnection connection HttpURLConnection url openConnection connectio
  • 如何添加触发翻译的谷歌翻译链接?

    我有一个保加利亚语网页 我希望我的用户能够将其一键翻译成英语 此外 当用户进入页面时 页面顶部不应有任何翻译横幅 在用户单击翻译链接后可以 我尝试过使用 googtrans bg en doc 但它不起作用 而且由于以下代码 它还在页面顶部
  • rxjs中如何做链序列

    我想要这样的事情 this myService doSomething subscribe result gt doSomething then gt dosthelse then gt dosanotherthing 所以我想链接 the
  • CSS 重新居中换行元素

    我以为这很简单 但事实证明有点令人头疼 当用户调整浏览器大小并导致其中一个 或多个 换行到下一行时 我试图让图像网格重新居中 我尝试过给网格包装器 display inline block 它的父级值为 text align center
  • 如何在“Java Swing”中获取鼠标悬停事件

    我有一个JPanel其中有多个组件 就像一些JLabels JTextBoxes JComboBoxes JCheckBoxes etc 如果用户将鼠标悬停在这些组件上 3 秒 我想显示一个弹出帮助窗口 到目前为止我添加了一个MouseLi
  • Azure 访问令牌 - Jwt.io 中的签名无效

    这真是一场噩梦 我在使用 jwt io 验证 Azure 访问令牌签名时遇到问题 不管我做什么 答案总是无效的签名 有人可以尝试帮忙解决这个问题吗 我的步骤 我从 MSAL Java 应用程序示例 msal java webapp samp
  • 如何查找或插入 Vec [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个函数 该函数查找返回对 Vec 中现有元素的可变引用 或者如果不存在则将其插入并返回对新元素的可变引用 我已经尝试过几次 但借用检查员不相信 我已将尝试编写的代码简化为下面的示例 该示例给出了相
  • Maven 正在尝试从 maven.ocean.net.au 更新 glassfish 插件

    我们无法部署我们的应用程序 因为 Maven 正在尝试从 maven ocean net au 存储库更新 glassfish 插件 尽管我们的 pom 中没有定义这样的存储库 问题是 maven ocean net au 不在线 因此我们
  • 合并两个 SQLite 数据库文件 (C# .NET)

    我将 C NET 与 SQLite 的 C 包装器一起使用 我正在尝试将两个 SQLite 数据库合并在一起 同时排除重复项 我发现了这个 这是从几个不同的论坛问题中引用的 http old nabble com Attempting to
  • 如果函数声明了返回类型,mypy 是否仅对函数进行类型检查?

    以下文件 from typing import List class A def init self myStr self chars List int list myStr def toString self return join se
  • 使用 ant 或 maven 执行我的 groovy 脚本

    我有以下内容 1个java类 1 个bat 文件 启动groovy 脚本 1 个常规文件 全部在同一个文件夹中 现在我想使用 Maven 或 Ant 来运行 groovy 文件 但我无法让它工作 有人可以告诉我如何编写这个 pom xml
  • 使用 ArrayWritable 进行序列化似乎以一种有趣的方式工作

    我正在与ArrayWritable 在某些时候我需要检查 Hadoop 如何序列化ArrayWritable 这是我通过设置得到的job setNumReduceTasks 0 0 IntArrayWritable 10f11b8 3 In