我有这样的日志文件。我想在Scala中创建一个DataFrame。
2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.000086 0.001048 0.001337 200 200 0 57 "GET https://www.example.com:443/ HTTP/1.1" "curl/7.38.0" DHE-RSA-AES128-SHA TLSv1.2
我想用逗号替换所有空格,以便我可以使用spark.sql,但我无法这样做。
这是我的尝试:
首先将其导入为文本文件,以查看是否存在replaceAll方法。
在空间的基础上分裂。
由于你还没有类型列,我将以RDD开头,使用地图拆分文本,然后转换为带有架构的Dataframe。大致:
val rdd = sc.textFile({logline path}).map(line=>line.split("\s+"))
然后,你需要将RDD(每个记录是一个令牌数组)转换为Dataframe。最好的方法是将数组映射到Row对象,因为RDD [Row]是数据帧的基础。
一个更简单的方式就是
spark.createDataFrame(rdd).toDF("datetime", "host", "ip", ...)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。