如何在Apache Spark Scala中读取PDF文件和xml文件?

阿基拉病毒

我用于读取文本文件的示例代码是

val text = sc.hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text], sc.defaultMinPartitions)
    var rddwithPath = text.asInstanceOf[HadoopRDD[LongWritable, Text]].mapPartitionsWithInputSplit { (inputSplit, iterator) ⇒
      val file = inputSplit.asInstanceOf[FileSplit]
      iterator.map { tpl ⇒ (file.getPath.toString, tpl._2.toString) }
    }.reduceByKey((a,b) => a)

这样,我如何使用PDF和Xml文件

拉姆·加迪亚拉姆

可以使用Tika解析PDF和XML:

看看阿帕奇提卡-内容分析工具包 在此处输入图片说明看看- https://tika.apache.org/1.9/api/org/apache/tika/parser/xml/
- http://tika.apache.org/0.7/api /org/apache/tika/parser/pdf/PDFParser.html
- https://tika.apache.org/1.9/api/org/apache/tika/parser/AutoDetectParser.html
下面是提卡星火的例子集成:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.input.PortableDataStream
import org.apache.tika.metadata._
import org.apache.tika.parser._
import org.apache.tika.sax.WriteOutContentHandler
import java.io._

object TikaFileParser {

  def tikaFunc (a: (String, PortableDataStream)) = {

    val file : File = new File(a._1.drop(5))
    val myparser : AutoDetectParser = new AutoDetectParser()
    val stream : InputStream = new FileInputStream(file)
    val handler : WriteOutContentHandler = new WriteOutContentHandler(-1)
    val metadata : Metadata = new Metadata()
    val context : ParseContext = new ParseContext()

    myparser.parse(stream, handler, metadata, context)

    stream.close

    println(handler.toString())
    println("------------------------------------------------")
  }


  def main(args: Array[String]) {

    val filesPath = "/home/user/documents/*"
    val conf = new SparkConf().setAppName("TikaFileParser")
    val sc = new SparkContext(conf)
    val fileData = sc.binaryFiles(filesPath)
    fileData.foreach( x => tikaFunc(x))
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Apache Spark中聚合时间序列数据

如何在Apache Spark作业中执行阻止IO?

如何在Apache Spark(scala)中迭代RDD

如何在Apache Spark SQL中执行更新

如何在Apache Spark中重新分区CassandraRDD

如何在Apache Spark中执行LabelEncoding或分类值

如何在Apache Spark Pipeline中打印最佳模型参数?

如何在Apache Spark中执行Sort JavaPairRDD

如何使用Scala在Spark中读取json文件?

Apache Spark如何在内存中工作?

如何在Apache Spark中爆炸get_json_object

如何读取XML文件Azure Databricks Spark

如何使用Scala从Spark读取Blob存储中的文件

如何在Scala的Apache Spark中将RDD(读取文本文件的目录)转换为dataFrame?

如何在Spark中读取固定字符长度格式的文件

如何在Apache Spark的Scala中按数据集分组?

如何在Apache Spark中反向排列DataFrame

如何在Apache Spark的RDD中传递血统

如何在Spark中读取HDFS序列文件

Bluemix Apache Spark服务-Scala-读取文件

如何在Apache Spark中添加多个列

如何在Apache Spark中执行简单的reduceByKey?

如何在apache spark中解决以下问题

如何在 Apache Spark 中对 joinExpression 进行算术运算

如何在spark scala中为每条记录创建一个xml文件

如何在 Apache Spark 中获取评估数据?

如何在 Apache Spark Standalone Cluster 中设置文件路径?

如何在 Apache Spark 的 Left join 中获取 join key

如何从 spark scala 中的外部文件读取我的文件路径和架构?