Как мне конвертировать EBCDIC в TEXT, используя Hadoop Mapreduce
Мне нужно проанализировать формат входного файла EBCDIC. Используя Java, я могу прочитать это, как показано ниже:
InputStreamReader rdr = new InputStreamReader(new FileInputStream("/Users/rr/Documents/workspace/EBCDIC_TO_ASCII/ebcdic.txt"), java.nio.charset.Charset.forName("ibm500"));
Но в Hadoop Mapreduce мне нужно разобрать через RecordReader
который не работал до сих пор.
Может ли кто-нибудь предоставить решение этой проблемы?
3 ответа
Вы можете попытаться разобрать его через Spark, возможно, используя Cobrix, который является источником данных COBOL с открытым исходным кодом для Spark.
Лучшее, что вы можете сделать, - это сначала преобразовать данные в ASCII, а затем загрузить в HDFS.
Почему файл в EBCDIC???, он должен быть???
Если это просто текстовые данные, почему бы не преобразовать их в ascii, когда вы отправляете / извлекаете файл из мэйнфрейма / AS400???.
Если файл содержит двоичные или числовые поля Кобола, у вас есть несколько вариантов
- Конвертируйте файл в обычный текст на мэйнфрейме (утилита сортировки мэйнфреймов хороша в этом), затем отправьте файл и конвертируйте его (в ascii) .
- Если это файл Cobol, есть несколько проектов с открытым исходным кодом, которые вы можете посмотреть по адресу https://github.com/tmalaska/CopybookInputFormat или https://github.com/ianbuss/CopybookHadoop
- Существуют коммерческие пакеты для загрузки данных мэйнфрейма-Cobol в hadoop.