HDFS:使用 HDFS API 附加到 SequenceFile

2024-06-24

我一直在尝试使用 Java API 在 HDFS 上创建和维护序列文件,而不运行 MapReduce 作业作为设置用于未来的 MapReduce 工作。我想将 MapReduce 作业的所有输入数据存储在单个序列文件中,但数据会随着时间的推移而附加。问题是,如果 SequenceFile 存在,则以下调用将仅覆盖 SequenceFile 而不是附加到它。

// fs and conf are set up for HDFS, not as a LocalFileSystem
seqWriter = SequenceFile.createWriter(fs, conf, new Path(hdfsPath),
               keyClass, valueClass, SequenceFile.CompressionType.NONE);
seqWriter.append(new Text(key), new BytesWritable(value));
seqWriter.close();

另一个问题是,我无法维护自己格式的文件并在一天结束时将数据转换为 SequenceFile,因为可以随时使用该数据启动 MapReduce 作业。

我找不到任何其他 API 调用来附加到 SequenceFile 并维护其格式。由于格式需要,我也不能简单地连接两个 SequenceFile。

我还想避免为此运行 MapReduce 作业,因为对于我添加到 SequenceFile 的少量数据来说,它的开销很高。

有什么想法或解决方法吗?谢谢。


支持追加到现有的SequenceFiles已通过增强 JIRA 添加到 Apache Hadoop 2.6.1 和 2.7.2 及以上版本中:https://issues.apache.org/jira/browse/HADOOP-7139 https://issues.apache.org/jira/browse/HADOOP-7139

例如用法,测试用例可以阅读:https://github.com/apache/hadoop/blob/branch-2.7.2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFileAppend.java#L63- L140 https://github.com/apache/hadoop/blob/branch-2.7.2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFileAppend.java#L63-L140

CDH5 用户可以在 CDH 5.7.1 及以后的版本中找到相同的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDFS:使用 HDFS API 附加到 SequenceFile 的相关文章

  • Hive NVL 不适用于列的日期类型 - NullpointerException

    我正在使用 HDFS 上的 MapR Hive 发行版并面临以下问题 如果表的列类型是 日期 类型 则NVL https cwiki apache org confluence display Hive LanguageManual UDF
  • 如何使用 python 从 Azure Data Lake Gen 2 读取文件

    我有一个文件位于 Azure Data Lake gen 2 文件系统中 我想读取文件的内容并进行一些低级更改 即从记录中的一些字段中删除一些字符 更明确地说 有些字段的最后一个字符也为反斜杠 由于该值包含在文本限定符 中 因此字段值会转义
  • 更改spark_temporary目录路径

    是否可以更改 temporarySpark在写入之前保存临时文件的目录 特别是 由于我正在编写表的单个分区 因此我希望临时文件夹位于分区文件夹内 是否可以 由于其实现原因 无法使用默认的 FileOutputCommiter FileOut
  • Spark/Yarn:HDFS 上不存在文件

    我在 AWS 上设置了 Hadoop Yarn 集群 有 1 个主服务器和 3 个从服务器 我已经验证我有 3 个活动节点在端口 50070 和 8088 上运行 我在客户端部署模式下测试了 Spark 作业 一切正常 当我尝试使用 Spa
  • Hadoop - 直接从 Mapper 写入 HBase

    我有一个 hadoop 作业 其输出应写入 HBase 我并不真正需要减速器 我想要插入的行类型是在映射器中确定的 如何使用 TableOutputFormat 来实现此目的 从所有示例中 我看到的假设是 reducer 是创建 Put 的
  • Hadoop 超立方体

    嘿 我正在启动一个基于 hadoop 的超立方体 具有灵活的维度数 有人知道这方面现有的方法吗 我刚刚发现PigOLAP草图 http wiki apache org pig PigOLAPSketch 但没有代码可以使用它 另一种方法是Z
  • 通过Oozie命令行指定多个过滤条件

    我正在尝试通过命令行搜索一些特定的 oozie 作业 我使用以下语法进行相同的操作 oozie jobs filter status RUNNING status KILLED 但是 该命令仅返回正在运行的作业 而不是已杀死的作业 需要帮助
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • MapReduce 中 1 个任务的减速器数量

    在典型的 MapReduce 设置 如 Hadoop 中 1 个任务使用多少个减速器 例如计算单词数 我对 Google MapReduce 的理解意味着只涉及 1 个减速器 那是对的吗 例如 单词计数会将输入分为 N 个块 并且 N 个
  • “错误:无法找到或加载主类 org.apache.hadoop.util.RunJar”是什么意思?

    我正在尝试运行一个示例 因为它指出 Hadoop 实践 一书 http www manning com lam 第 15 页 这是需要运行的命令 bin hadoop jar hadoop examples jar 但我收到这个错误 Err
  • 使用 Hive 计算文本变量的单词频率

    我有一个变量 每一行都是一个句子 例子 Row1 Hey how are you Rwo2 Hey Who is there 我希望输出是按单词分组的计数 Example Hey 2 How 1 are 1 我正在使用 split a bi
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 关于 Hadoop 和压缩输入文件的非常基本的问题

    我已经开始研究 Hadoop 如果我的理解是正确的 我可以处理一个非常大的文件 它会被分割到不同的节点上 但是如果文件被压缩 那么文件就无法分割 并且需要由单个节点处理 有效地破坏了运行一个mapreduce 一个并行机器集群 我的问题是
  • 如何配置Hive仓库路径?

    我修改了这部分
  • 像袋子一样压平元组

    我的数据集如下所示 A 1 2 B 2 9 我想 展平 Pig 中的元组 基本上为内部元组中找到的每个值重复每个记录 这样预期的输出是 A 1 A 2 B 2 B 9 我知道当元组 1 2 和 2 9 是袋时这是可能的 你的洞察力很好 可以
  • “客户端”对于 Hadoop/HDFS 究竟意味着什么?

    我理解其背后的一般概念 但我希望对 客户 是什么有更多的澄清和明确的定义 例如 如果我只是在终端上写一个 hdfs 命令 它仍然是 客户端 吗 ClientHadoop中是指用于与Hadoop文件系统通信的接口 Hadoop 可使用不同类型
  • 主节点的“start-all.sh”和“start-dfs.sh”没有启动从节点服务?

    我已使用从属节点的主机名更新了 Hadoop 主节点上的 conf slaves 文件 但我无法从主节点启动从属节点 我必须单独启动从属服务器 然后我的 5 节点集群才能启动并运行 如何使用主节点的单个命令启动整个集群 此外 Seconda
  • HBase中删除多行的有效方法

    有没有一种有效的方法可以删除 HBase 中的多行 或者我的用例是否不适合 HBase 有一个表称为 图表 其中包含图表中的项目 行键的格式如下 chart date reversed ranked attribute value reve
  • 如何通过HBase REST服务获取Phoenix表数据

    我使用 Phoenix JDBC 驱动程序在以下代码片段中创建了一个 HBase 表 Class forName org apache phoenix jdbc PhoenixDriver Connection conn DriverMan
  • enableHiveSupport 在 java Spark 代码中引发错误[重复]

    这个问题在这里已经有答案了 我有一个非常简单的应用程序 尝试使用 Spark 从 src main resources 读取 orc 文件 我不断收到此错误 无法实例化具有 Hive 支持的 SparkSession 因为找不到 Hive

随机推荐