pyspark-将字符串类型元素的数组转换为键值对的Map

4jb9z9bj  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(342)

我正在尝试解析包含调用数据的日志文件的内容。
我已经能够将日志数据从非常粗糙的性质转换为如下所示的性质——每个元素所在的字符串类型元素数组key:value form. 每一行表示不同的事件类型,因此具有不同的“模式”。
...
["activeind:y", "callerani:123456789", "storecode:12345"]
["appcode:123", "exitcode:n", "segmentid:123"]
["storecode:12345“,”存储24hourind:y“,”店主armacyind:y“,”存储eopenhour:0800"]
...
我需要创建一个Map列,其中包含上面字符串数组中的所有键值对,这样我就可以通过“key name”获取任何键
(同样,如果将来有新的属性添加到任何特定的日志事件类型中,我可以将每个日志事件类型的所有键跟踪为“schema”版本)

7jmck4yq

7jmck4yq1#

谢谢你带领我们走上正确的道路。。。

def item_description(item):
arr =  item
returndict = {}
for x in arr:                                  
    arrElem = x.split(":")
    key = arrElem[0]
    value = arrElem[1] 
    returndict.update({key: value})        
return returndict

item_description_udf = udf(item_description,MapType(StringType(),StringType())) 
eventListParsed3DF = eventListParsed3DF.withColumn("events_map",item_description_udf(eventListParsed3DF.events_array))

相关问题