当前位置: 首页 > 面试题库 >

如何在Hadoop-.20 API中指定KeyValueTextInputFormat分隔符?

尹俊雅
2023-03-14
问题内容

在新的API(apache.hadoop.mapreduce.KeyValueTextInputFormat)中,如何指定制表符(默认值)以外的分隔符(定界符)来分隔键和值。

样本输入:

one,first line
two,second line

需要的输出量:

Key : one
Value : first line
Key : two
Value : second line

我将KeyValueTextInputFormat指定为:

    Job job = new Job(conf, "Sample");

    job.setInputFormatClass(KeyValueTextInputFormat.class);
    KeyValueTextInputFormat.addInputPath(job, new Path("/home/input.txt"));

对于制表符作为分隔符,这工作正常。


问题答案:

在较新的API中,您应该使用mapreduce.input.keyvaluelinerecordreader.key.value.separator配置属性。

这是一个例子:

Configuration conf = new Configuration();
conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", ",");

Job job = new Job(conf);
job.setInputFormatClass(KeyValueTextInputFormat.class);
// next job set-up


 类似资料:
  • 我将立即承认我是一个java开发人员,正在寻找一个类似于DecimalFormat的函数,类似于: 代码改编自Oracle javase i18n 我能找到的与此相关的每个资源要么只是格式化(而不是解析) 如何为Angular 4中的数字管道指定千位分隔符 NativeScript:格式化数字类型脚本 或者人们使用正则表达式替换(这在我看来很疯狂) 如何将带有逗号千分隔符的字符串解析为数字? 或一

  • 问题内容: 有什么方法可以使用cut命令为更多空间指定字段定界符吗?(例如“ +”)?例如:在以下字符串中,我希望达到值“ 3744”,我应该说什么字段分隔符? 不是我想要的,因为它仅用于一个空间。 也不是我要找的东西,而是如何处理“切割”? 谢谢。 问题答案: 实际上,这 正是 您应该研究的工具: 或者您也可以完全放弃,因为您知道正则表达式: 但是,如果出于某种奇怪的原因,您真的 不能 使用,您

  • 问题内容: 我有一种情况,我必须解析来自不同来源的CSV文件,解析代码非常简单明了。 我的问题来自CSV分隔符,我有许多不同的格式,有时是有时是 有什么方法可以在解析文件之前确定定界符 问题答案: univocity-parsers支持自动检测定界符(也包括行尾和引号)。只需使用它而不是与您的代码作斗争: 免责声明:我是该库的作者,并且确保确保涵盖了各种极端情况。它是开源且免费的(Apache 2

  • 我有输入字符串'~~'作为分隔符。 例如:字符串s=“1~~vijay~~25~~pune”;当我在Java中用'~\\~'拆分它时,它工作得很好。 还有其他人面临同样的问题吗?请就这个问题发表评论。

  • 问题内容: 我有一个这样定义的属性: 由于我将Windows用作操作系统,因此它包含反斜杠。我想将此路径添加到glassfish域作为JVM选项(使用glassfish maven插件)。问题是,asadmin只能使用斜杠作为分隔符,而我的所有反斜杠都不断消失。如何定义内容与斜杠完全相同的属性? 问题答案: 我认为没有非编程方式可以做到这一点。因此,我建议使用带有Maven GMaven插件的普通

  • 使用Jenkins进行多平台多分支构建。 我有多个多分支管道项目(每个平台一个,因为每个平台需要显着不同的构建步骤)。我有一个具有多个分支的代码存储库(这就是为什么多分支管道项目有意义)。 我希望每个多分支管道项目引用不同的Jenkinsfile,而不是所有人都试图使用文件名为“Jenkinsfile”的文件,该文件位于存储库的根目录中。 这个已解决的错误表明我应该能够做到这一点,但我找不到任何概