【问题标题】:Store HDFS file contents in ArrayBuffer using Spark Scala使用 Spark Scala 将 HDFS 文件内容存储在 ArrayBuffer 中
【发布时间】:2016-12-25 00:48:54
【问题描述】:

我正在尝试搜索特定关键字并将与该单词关联的整行放入数组缓冲区中。我正在使用下面的示例并尝试将所有 HHH 放入数组缓冲区中。

示例

PID|1|5897450M|58974650M|58977650M|CSTO^TES||19320722|F|||745 - 81 ST^^IAMI BEH^FL^341|||||||332165520
ORC||5033220|503320||||||20150202|||1689659096^HAM^MISH^^^^PI
OBR|1||64564|DF DEFAULT|||20150202|2015002||||||||16096^^^^^I|||||||||
HHH|1|NM|6690-2^^LN^0^^L||7|XE/UL|3.4-18||||F|||20150202| ^^L
HHH|9|NM|777-3^LOINC^LN^015172^PLATELETS^L||185|X10E3/UL|150-379||||F|||201202|TA   ^^L
HHH|10|NM|770-8^^LN^015107^^L||65|%|||||F|||20150202|TA   ^^L
HHH|11|NM|736-9^LOINC^LN^015123^^L||26|%|||||F|||20150202|TA   ^^L
HHH|12|NM|5905-5^LOINC^LN^015131^^L||8|%|||||F|||20150202|TA   ^^L
HHH|13|NM|713-8^LOINC^LN^015149^^L||1|%|||||F|||20150202|TA   ^^L

为了实现我正在编写此代码的目标:

import scala.collection.mutable.ArrayBuffer
object WordCount {
def main(args: Array[String])
{
    var arrybufobx =  ArrayBuffer[String]()
    val textfile = sc.textFile("/user/cloudera/xxx/File")
    val word = textfile.filter(x => x.length >  0).map(_.split('|'))
    val obx = word.filter(_.contains("HHH"))
    val obxkeys = obx.map(a => s"${a(0)},${a(5)},${a(8)}").toString()
    arrybufobx += obxkeys
    arrybufobx.foreach { println }
}
}   

但我看不到数组缓冲区的内容。我想知道如何查看我的数组缓冲区内容,这是正确的方法吗?

请帮忙

【问题讨论】:

    标签: scala hadoop apache-spark cloudera bigdata


    【解决方案1】:

    你也可以试试这样的。利用 toBuffer 方法将任何集合转换为可变集合。

    我尝试了以下输入

    PID|1|5897450M
    ORC||5033220
    HHH|9|NM
    HHH|1|NM
    

    代码:

    val myArr=Source.fromFile("C:\\Users\\hhh.txt").getLines().toArray;
    
    val myFiltered= myArr.filter { x => x.length()>0 }.map { x => x.split("\\|") }
    
    val finalData =myFiltered.filter { x => x.contains("HHH") }
    
    var myMapped =finalData.map { x => x(0)+ ","+x(1)+","+ x(2) }
    
    println(myMaped.toBuffer)
    

    按照上面的代码输出:

    ArrayBuffer(HHH,9,NM, HHH,1,NM)
    

    【讨论】:

    • 我尝试了相同的代码,我得到了error: value toBuffer is not a member of org.apache.spark.rdd.RDD[String]
    • Source.fromFile 我可以用于 hdfs 文件吗?因为我的文件不在本地。因为当我运行你的代码时,我得到了java.io.FileNotFoundException: /user/cloudera/xxx/File (No such file or directory)
    • 请帮忙,因为我被困在这里
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2015-10-26
    • 2014-08-21
    • 2018-05-22
    • 1970-01-01
    • 2014-06-22
    相关资源
    最近更新 更多