login(`admin,`123456)


def parseAndImportIntoDfs(realDbName,realTbNname,dtName,tagInfo,fileParse){
	/*
	 * Description：
	 * 	此函数用于解析miniSeed文件，并将结构化数据存入分布式数据库
	 * Input：
	 * 	realDbName,realTbNname,dtNam：STRING 
	 * 	tagInfo：dict   键为台网、台站、位置通道拼接起的字符串，值为对应的id
	 * 	fileParse：STRING 解析的miniSeed文件存储路径
	 */
	ret = mseed::parseStream(file(fileParse).readBytes(30000000))
	data = ret[`data]
	data.replaceColumn!(`id,tagInfo[data.id])
	delete from data where id = NULL
	pt = loadTable(realDbName,realTbNname)
	pt.append!(data)	 	
}


def parallelInToDfs(realDbName,realTbNname,dtName,tagInfo,filePathList){
	/*
	 * Description：
	 * 	此函数用于并行解析MiniSeed文件，并存入分布式数据库
	 * Input：
	 * 	realDbName,realTbNname,dtName：均为STRING类型常量  分别代表分布式数据库名、分区表名、维度表名
	 * 	tagInfo：dict  键为由台网、台站、位置、通道组成的字符串，值为对应的id
	 * 	filePathList：STRING VECTOR 需要解析的MiniSeed文件路径向量
	 */
	ploop(parseAndImportIntoDfs{realDbName,realTbNname,dtName,tagInfo,},filePathList)
}


def mainHistoryMiniSeedParse(){
	realDbName,realTbNname,dtName = "dfs://real","realData","tagInfo"
	filePathList = exec "../miniSeed/"+net+"."+sta+"."+loc+"."+chn+"."+"20230302.mseed" from loadTable(realDbName,dtName)
	filePathListGroup = cut(filePathList,48)
	d = exec tagid,id from loadTable(realDbName,dtName)
	tagInfo=dict(d[`tagid],d[`id])
	for(i in 0..(filePathListGroup.size()-1)){
		submitJobEx("parse_mseed_into_dfs"+string(i),"parse_mseed_into_dfs"+string(i),i%10,48,parallelInToDfs,realDbName,realTbNname,dtName,tagInfo,filePathListGroup[i])
	}	
}

