【发布时间】:2017-08-04 13:05:55
【问题描述】:
我正在尝试将使用 saveAsNewAPIHadoopFile 编码的 ISO-8859-1 字符集的 RDD 保存到 AWS S3 存储桶 但是当它保存到 S3 存储桶时,它会将字符编码更改为 UTF-8。
代码sn-p
val cell = “ MYCOST £25” //This is in UTF-8 character encoding .
val charset: Charset = Charset.forName(“ISO-8859-1”)
val cellData = cell.padTo(50, “ “).mkString
val iso-data = new String(cellData.getBytes(charset), charset) // here it converts the string from UTF-8 to ISO-8859-1
但是当我使用 saveAsNewAPIHadoopFile 保存文件时,它会更改为 UTF-8 格式。 我认为 saveAsNewAPIHadoopFile TextOutputFormat 会自动将文件编码转换为 UTF-8。有没有办法可以将内容保存到具有相同编码 (ISO-8859-1) 的 S3 存储桶
ds.rdd.map { record =>
val cellData = record.padTo(50, “ “).mkString
new String(cellData.getBytes(“ISO-8859-1”), “ISO-8859-1”)
}.reduce { _ + _ }
}.mapPartitions { iter =>
val text = new Text()
iter.map { item =>
text.set(item)
(NullWritable.get(), text)
}
}.saveAsNewAPIHadoopFile(“”s3://mybucket/“, classOf[NullWritable], classOf[BytesWritable], classOf[TextOutputFormat[NullWritable, BytesWritable]])
感谢您的帮助
【问题讨论】:
标签: hadoop apache-spark amazon-s3 utf-8 character-encoding