十四.Spark SQL总结之spark日志文件数据格式的转换

第一步.数据源
找到spark的日志数据源,在/root/spark/spark-2.0.2-bin-hadoop2.7/logs目录下:
在这里插入图片描述
通过对文件的读取,统计其中数据的条数:

val masterLog = sc.textFile("file:///root/spark/spark-2.0.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop000.out")

val workLog =  sc.textFile("file:///root/spark/spark-2.0.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop000.out")

val allLog =  sc.textFile("file:///root/spark/spark-2.0.2-bin-hadoop2.7/logs/*out*")

结果显示:
在这里插入图片描述

第二步.将读取的数据源转换成DataFrame

   方式一(通过schema然后再转DataFrame)

import org.apache.spark.sql.Row
val masterRDD = masterLog.map(x => Row(x))
import org.apache.spark.sql.types._
val schemaString = "line"
val fields = schemaString.split(" ").map(fieldName => StructField(fieldName,StringType,nullable = true))
val schema = StructType(fields)
val masterDF = spark.createDataFrame(masterRDD,schema)
masterDF.show

在这里插入图片描述

因为显示的数据部分隐藏了,如果不想隐藏需要使用下面的命令进行显示:

masterDF.show(false)

显示的结果:
在这里插入图片描述

   方式二(通过sql的方式获取数据)

scala> masterDF.createOrReplaceTempView("master_logs")

scala> spark.sql("select * from master_logs limit 10").show(false)

显示结果:
在这里插入图片描述

第三步.parquet格式的文件转换成DataFrame类型的数据

   方式一.以读取文件的形式

val userDF = spark.read.format("parquet").load("file:///root/spark/spark-2.0.2-bin-hadoop2.7/examples/src/main/resources/users.parquet")
userDF.show

在这里插入图片描述

   方式二.以sql的形式读取parquet类型的文件

val userDF = spark.sql("select * from parquet.`file:///root/spark/spark-2.0.2-bin-hadoop2.7/examples/src/main/resources/users.parquet`")
userDF.show

在这里插入图片描述

第四步.拓展

  1. 读取HDFS中的数据:
val hdfsDF = sc.textFile("hdfs://path/file路径")

2)读取正常的文件:

val dataDF = spark.read.format("txt").load("文件路径")

以上就是关于读取外部数据源的各种形式…

每天的疲劳换来的是美好的未来,笑着面对每一天。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值