SequenceFile 作为具有自定义 class 的文本 CLI

SequenceFile as text CLI with custom class

我有一个 SequenceFile 格式的 HDFS 文件。键是 Text,值是自定义可序列化的 class(比如)MyCustomClass。我想通过 hadoop fs -text 命令读取此文件,但它失败了,因为 hadoop 不知道 MyCustomClass 定义是什么。

我也尝试了 hdfs dfs - text 命令,但得到了相同的响应。使用 hadoop2.

有没有一种方法可以指定 class(例如通过 jar,例如 -cp myjar.jar 选项)?

您可以使用 -libjars 添加包含自定义可写 class 的 jar。

例如:

hadoop fs -libjars <JAR>.jar -text <DIR>

hadoop fs -libjars my-lib.jar -text output-dir/part-r-*

这将读取序列文件 Key/Value 对并在两个对象上调用 toString() ,在输出到标准输出时将它们分隔开。 -libjars 指定 hadoop 可以在哪里找到您的自定义键/值 类

how-to-parse-customwritable-from-text-in-hadoop