【发布时间】:2017-11-23 20:26:30
【问题描述】:
我现有的项目正在使用 Hadoop map-reduce 生成一个序列文件,该文件具有 XML 格式的自定义键和值。
通过从输入源一次读取一行来生成 XML 值,并实现 RecordReader 以从纯文本中返回 XML 格式的下一个值。
例如输入源文件有 3 行(第一行是标题,其余行是实际数据)
id|name|value
1|Vijay|1000
2|Gaurav|2000
3|Ashok|3000
post map方法序列文件有数据如下:
FeedInstanceKey{feedInstanceId=1000, entity=bars} <?xml version='1.0' encoding='UTF-8'?><bars><id>1</id><name>Vijay</name><value>1000</value></bars>
FeedInstanceKey{feedInstanceId=1000, entity=bars} <?xml version='1.0' encoding='UTF-8'?><bars><id>2</id><name>Gaurav</name><value>2000</value></bars>
FeedInstanceKey{feedInstanceId=1000, entity=bars} <?xml version='1.0' encoding='UTF-8'?><bars><id>3</id><name>Ashok</name><value>3000</value></bars>
问题:我希望在 Spark 中实现相同的功能。基本上就是读取输入文件,生成上面的键值对。
有没有办法/可能重用现有的 InputFormat 以及我的 Hadoop 映射器类中使用的 RecordReader。
RecordReader 负责/具有将纯文本行转换为 XML 并作为值返回给 Hadoop map 方法的逻辑,以便在 context.write() 方法中写入。
请提出建议。
【问题讨论】:
标签: java xml hadoop apache-spark mapreduce