如何在hdfs中更改字符集

lvjbypge  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(436)

我有一个小的hadoop集群版本1.1.2,在运行一些用德语编写的文本文件的基本字数统计时,我注意到hdfs不能很好地处理像这样的特殊字符ü,ö,ä 等。
有没有办法改变hdfs中使用的字符集?
这是我在这里得到的一些例子ö" 预计:
安吉�任,安吉�里格,安吉�瑞根,安吉�起重工

7ajki6be

7ajki6be1#

既然你提到了单词计数的例子,我猜你是在用文本。文本假定基础内容的字符集是utf8。如果您的字符集不是utf8,则需要从文本中获取byte[]并自行转换。
我不确定您是否正在使用以下代码(来自hadoop wiki):

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
           String line = value.toString();
           StringTokenizer tokenizer = new StringTokenizer(line);
           while (tokenizer.hasMoreTokens()) {
               word.set(tokenizer.nextToken());
             context.write(word, one);
           }
}

在这种情况下,你只需要改变 String line = value.toString();String line = new String(value.getBytes(), 0, value.getLength(), "change_to_your_charset"); 顺便说一下,hdfs与charset无关。它只存储二进制数据。”“字符集”是一个如何解释文本文件中二进制数据的概念。

相关问题