gpt4 book ai didi

scala - 如何在Spark中处理多行输入记录

转载 作者:行者123 更新时间:2023-12-04 03:00:46 26 4
gpt4 key购买 nike

我的每个记录都分布在输入文件(非常大的文件)的多行中。

前任:

Id:   2
ASIN: 0738700123
title: Test tile for this product
group: Book
salesrank: 168501
similar: 5 0738700811 1567184912 1567182813 0738700514 0738700915
categories: 2
|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Earth-Based Religions[12472]|Wicca[12484]
|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Earth-Based Religions[12472]|Witchcraft[12486]
reviews: total: 12 downloaded: 12 avg rating: 4.5
2001-12-16 cutomer: A11NCO6YTE4BTJ rating: 5 votes: 5 helpful: 4
2002-1-7 cutomer: A9CQ3PLRNIR83 rating: 4 votes: 5 helpful: 5

如何识别和处理Spark中的每个多行记录?

最佳答案

如果多行数据具有定义的记录分隔符,则可以对多行​​记录使用hadoop支持,并通过hadoop.Configuration对象提供分隔符:

这样的事情应该做:

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.io.{LongWritable, Text}
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat
val conf = new Configuration
conf.set("textinputformat.record.delimiter", "id:")
val dataset = sc.newAPIHadoopFile("/path/to/data", classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf)
val data = dataset.map(x=>x._2.toString)

这将为您提供一个 RDD[String],其中每个元素都对应一个记录。之后,您需要根据您的应用程序要求来解析每个记录。

关于scala - 如何在Spark中处理多行输入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com