【发布时间】:2023-03-31 13:39:01
【问题描述】:
我是 Spark 的新手,想将页面记录从 Wikipedia 转储加载到 RDD。
我尝试使用 hadoop 流中提供的记录阅读器,但不知道如何使用它。谁能帮我用下面的代码创建一个不错的带有页面记录的 RDD?
import org.apache.hadoop.io.Text
import org.apache.hadoop.streaming.StreamXmlRecordReader
import org.apache.hadoop.mapred.JobConf
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object WikiTest {
def main(args: Array[String]) {
// configuration
val sparkConf = new SparkConf()
.setMaster("local[4]")
.setAppName("WikiDumpTest")
val jobConf = new JobConf()
jobConf.set("input", "enwikisource-20140906-pages-articles-multistream.xml")
jobConf.set("stream.recordreader.class", "org.apache.hadoop.streaming.StreamXmlRecordReader")
jobConf.set("stream.recordreader.begin", "<page>")
jobConf.set("stream.recordreader.end", "</page>")
val sparkContext = new SparkContext(sparkConf)
// read data
val wikiData = sparkContext.hadoopRDD(
jobConf,
classOf[StreamXmlRecordReader],
classOf[Text],
classOf[Text])
// count rows
println(wikiData.count)
}
}
Spark 似乎拒绝使用 StreamXmlRecordReader。我收到以下错误:
[错误] 发现:类[org.apache.hadoop.streaming.StreamXmlRecordReader (classOf[org.apache.hadoop.streaming.StreamXmlRecordReader])
[error] required: Class[_ <: org.apache.hadoop.mapreduce.inputformat>
[错误] classOf[StreamXmlRecordReader]
如果我忽略 Eclispse 的警告并启动 prgramm,我会遇到 java.lang.ClassNotFoundException。
【问题讨论】:
标签: scala hadoop apache-spark hadoop-streaming