开发者社区> 问答> 正文

如何用Spark中的逗号替换空格(使用Scala)?

我有这样的日志文件。我想在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方法。
在空间的基础上分裂。

展开
收起
社区小助手 2018-12-06 11:56:58 4899 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    由于你还没有类型列,我将以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", ...)

    2019-07-17 23:18:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载