2017-07-06 8 views
1

これは私が解析してるアブロファイルの形式です:avroファイルの配列の一部をscalaで抽出するには?

var ttime: Long = 0; 
var eTime: Long = 0; 
var tids: String = ""; 
var tlevel: Integer = 0; 
var tboot: Long = 0; 
var rNo: Integer = 0; 
var varType: String = ""; 
var uids: List[TRUEntry] = Nil; 

一覧は、[TRUEntry]私はパースだ配列です。これが私のやり方です。

this.uids  
.foreach((obj:TRUEntry) => { 
    uInfo += obj.uId + " , " + obj.initM.toString() + " , " 
})  

がどのように抽出して、次のコードで上記の配列からobj.uid渡すことができます:

val avroParsed = avroRow 
    .map(x => new TRParser(x)) 
    .map((obj: TRParser) => ((obj.tids, **obj.uId**),1)) 

答えて

0

それを

this.uids = Nil 
    row.getAs[Seq[Row]]("uids") 
    .foreach((objRow: Row) => 
     this.uids ::= (new TRUEntry(objRow)) 
    ) 

は、これは私がUIDを解析してる方法です次のコードを使用して実行できます。

val avroParsed = avroRow 
    .map(x => new TRParser(x)) 
    .map((obj: TRParser) => { 
     val tId = obj.source.trim 
     var retVal: String = "" 
     obj.uids 
     .foreach((obj: TRUEntry) => { 
      retVal += tId + "," + obj.uId.trim + ":" 
     }) 
     retVal.dropRight(1) 
    }) 

Th tidとuidのe値は別々の変数として保存され、変数は 'for'ループで処理できます。

関連する問題