Spark项目之 sparkDemo 六 SparkSession数据读取测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lx1309244704/article/details/83896296

项目介绍,这个项目主要做一个注册历史统计留存。我这里不用sparkCore的方式来做(我觉得sparkCore的方式比较适合做数据整理),因为我觉得这种方式不是特别方便我这里就直接使用 DataFrame,当然最直接的方式就是看官方的文档:

官方地址:http://spark.apache.org/docs/1.6.2/api/scala/index.html#org.apache.spark.sql.DataFrame

推荐两篇参考博客:

https://blog.csdn.net/sparkexpert/article/details/51042970

https://blog.csdn.net/dabokele/article/details/52802150

第一步,我们理解一下需求,我们要根据访问日志表来分析出今日访问的用户是哪天注册的,然后再看留存的天数,所以我们要把今日访问的日志数据进行筛选和去重,然后和注册表的数据进行一个join,然后筛选出留存天数的用户数量。下面我就进入代码。

我们先一个最简单的方法:第一步,我们先把数据导入hdfs或者是hive,用sqoop导入请参考https://blog.csdn.net/lx1309244704/article/details/83892399,数据导入成功后我们就可以获取数据了,我在安装spark说过,我没有把hadoop的环境配置进去,那么我们访问hdfs的数据就需要加入他的全地址例如:hdfs://192.168.131.155:9000/input/ceshi.txt。

下面我进行一个测试test。

import org.apache.spark.sql.SparkSession


object test {
  def main(args: Array[String]): Unit = {
    val targetDay = "2018-10-20"
    
    val spark = SparkSession.builder().appName("shadowsocks").enableHiveSupport().getOrCreate()//读取hive的数据
    import spark.implicits._
    val regTableDF = spark.read.table("shadowsocks_log").where($"login_time" === targetDay).select($"id", $"ip_send", $"login_time").distinct
    regTableDF.show()
    spark.close()
  }
}

我们写一句就打个包然后就拿到环境上去执行,效率是不是会很慢。我们有两种方式来测试,

第一种,把数据考到本地,执行这个scala就行了。

第二种:我们就用spark 给我提供的spark-shell来运行。

我这里主要将spark-shell的方式,第一步我们需要先启动Hadoop和spark,然后启动spark-shell

./spark-shell --driver-class-path /home/hive/lib/mysql-connector-java-5.1.44.jar

然后一行一行的输入,import的架包也需要输入,如果你觉得太长,一行写不完想换行,那么请用 :paste形式,然后用ctrl +D的方式退出

 结果如下图:

 我们查询到了我们想要的数据。

项目demo:https://github.com/LX1309244704/sparkDemo

猜你喜欢

转载自blog.csdn.net/lx1309244704/article/details/83896296
今日推荐