Решение, которое я нашел, состояло в том, чтобы соединиться с каждым узлом в кластере (я думал, что у меня был только доступ к главному узлу, но я был неправ, в EMR у нас есть доступ ко всем узлам) и заменить jar Avro, который включенс Hadoop от банка Avro, который поставляется в Sqoop. Это не элегантное решение, но оно работает.
[ОБНОВЛЕНИЕ]
Случилось так, что опция -D mapreduce.job.user.classpath.first=true
не работала, потому что я использовал s3a
в качестве целевого каталога, когда Amazon сказал, что мыследует использовать s3
. Как только я начал использовать * 1008, Sqoop мог правильно выполнить импорт. Таким образом, нет необходимости заменять какой-либо файл в узлах. Использование s3a
может привести к некоторым странным ошибкам в EMR из-за собственной конфигурации Amazon, не используйте ее. Даже с точки зрения производительности s3
лучше, чем s3a
в EMR, поскольку реализация для s3
- это Amazon.