我试图通过迭代包含列名的列表来匹配表列中的单词。
columnMap
->映射,其中包含以下形式的列数据:key->locations
和
value->period:int|name:String|uniform_period:String|database:String|amount:Double|period_num:Int
在这些列中,我有一个配置单元分区列:period
,该列存在于另一个列表中,为了确保我的分区列存在于表列中,我尝试使用{{1} }。
contains
如果输入列表: val columnMap = Map[String, String]()
def partitionDataTypes(hiveTab:String, prtn_String_columns:String):String = {
val pcols = prtn_String_columns.split(",").toSeq
var pList = scala.collection.mutable.TreeSet[String]()
columnMap.foreach {
case (k, v) => if (columnMap.contains(hiveTab)) {
var cols = columnMap(hiveTab).split("\\|")
for (c <- cols) {
for (p <- pcols) {
if(c.contains(p)) pList ++ c
}
}
}
}
println("Partition Columns: " + pList.toString())
pList.toString()
}
包含:pcols
,则contains函数将得出以下输出值:period
,而我只需要获得完全匹配的“句点”即可。
我如何形成一个正则表达式模式来匹配period, uniform_period & period_num
数据,方法是匹配每个元素,该元素以columnMap
中的元素开始,并在上述循环中以pcols
之前结束。