桃符.154 2024-06-04 17:01 采纳率: 25%
浏览 23
已结题

广告检测流量作弊案例 IDEA运行代码报错 连接不上metastore 检测了环境配置没有问题 请求远程解决加VX问细节问题 不加的不回复

广告检测流量作弊案例 IDEA运行代码报错 连接不上master主机
检测了环境配置没有问题

编程代码

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}
import org.apache.spark.sql.functions._

object Exploreore {
  System.setProperty("HADOOP_USER_NAME","cc")
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .master("local[4]")
      .appName("Explore")
      .config("spark.sql.warehouse.dir", "hdfs://master:9000/warehouse")
      .config("hive.metastore.uris", "thrift://master:9083")
      .enableHiveSupport()
      .getOrCreate()


    spark.sparkContext.setLogLevel("WARN")

    // 读取数据
    val rawData = spark.read.option("header","true").csv("D:\\idea Class\\class 228\\src\\case_data_new.csv")
    // 统计记录数
    println("原始数据集行数为:" + rawData.count())

    // 统计日流量
    rawData.groupBy("dt").count().selectExpr("dt","count as dayCount").sort("dt").show()

    // 获取列名并存为List中
    val columnName = rawData.columns.toList
    // 计算数据字段缺失值
    for (i <- columnName){
      MissingCount(rawData,i)
    }

    def MissingCount(data:DataFrame,columnName:String): Unit ={
      if (columnName != "creativeid") {
        val missingRate = data.select(
          columnName).na.drop().count().toDouble / data.count()
        println(columnName+" 缺少值比率:" + (1-missingRate)*100 + "%")
      }
      else{
        val creativeidMissing = data.select(columnName).filter(
          "creativeid == 0").count() / data.count().toDouble
        println(columnName+" 缺少值比率:" + creativeidMissing*100+"%")
      }
    }

    // 脚本刷新网页作弊
    // 统计cookie和ip相同的流量记录数
    val cookie_ip_distribute = rawData.groupBy(
      "ip","cookie").count().withColumn("ip_cookie_count_precent", col(
      "count") / rawData.count()*100).orderBy(desc("count"))
    cookie_ip_distribute.show(false)

    // 统计同一个ip和cookie的浏览次数超过100的记录数
    val click_gt_100 = cookie_ip_distribute.filter("count > 100").count()
    println("同ip、cookie出现超过100次以上的记录数:" + click_gt_100)

    // 定期清除cookie,刷新网页作弊
    // 统计每个ip对应的不同cookie次数的分布情况
    val ip_distribute = rawData.groupBy("ip").agg(
      countDistinct("cookie") as "ip_count").groupBy("ip_count").agg(count(
      "ip_count") as "ip_count_count", count(
      "ip_count") / rawData.count()*100 as "ip_count_count_precent").orderBy(
      desc("ip_count"))
    ip_distribute.show(false)

    // ADSL重新拨号后刷新网页作弊
    // 统计ip前两段相同的记录数的分布情况
    val ip_two = rawData.withColumn("ip_two",substring_index(
      col("ip"), ".", 2)).groupBy("ip_two").agg(
      count("ip_two") as "ip_two_count").orderBy(desc("ip_two_count"))

    ip_two.show(false)


    // 统计ip前3段相同的记录数的分布情况
    val ip_three = rawData.withColumn(
      "ip_three",substring_index(col("ip"), ".", 3)).groupBy("ip_three").agg(
      count("ip_three") as "ip_three_count").orderBy(desc("ip_three_count"))

    ip_three.show(false)


    // 删除缺失字符
    val data_new = rawData.drop("mac").drop("creativeid").drop(
      "mobile_os").drop("mobile_type").drop("app_key_md5").drop(
      "app_name_md5").drop("os_type")

    data_new.write.mode(SaveMode.Overwrite).saveAsTable("ad_traffic.AdData")
  }
}


hive-site.xml配置


```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>  
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>  
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>username to use against metastore database</description>
  </property>  
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>hdfs://master:9000/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>

</configuration>




![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/d968768ef79142a79c65e0a14de8dc4f.png "#left")


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/5b8c505ea8f64642a663bc5dc7d081e7.png "#left")


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/52ae4e86e25c4422976dea4640cb5ed0.png "#left")

hive metastore服务已启动

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/db2ae98915c84075a3d17d8db33583e4.png "#left")

9083端口能监听到,但是查看进程却没有

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/41a711dc16a8495cb5fa3164cb7d1aa8.png "#left")

亟待解决
  • 写回答

23条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-04 17:01
    关注
    获得0.60元问题酬金

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用Spark SQL进行数据分析,并且遇到了连接Hive Metastore的问题。根据提供的信息,错误可能出现在Hive Metastore服务未正确启动或者配置文件设置有误。让我们一步一步地排查这个问题。

    首先,确认一下Hive Metastore服务是否正在运行。从截图来看,虽然你提到Hive Metastore服务已经启动,但图片中并未显示实际的服务状态。请确保hive-metastore服务已经在您的集群中运行。在Linux环境中,你可以通过以下命令检查服务状态:

    sudo service hive-metastore status
    

    或者

    systemctl status hive-metastore
    

    如果服务未运行,你需要启动它:

    sudo service hive-metastore start
    

    或者

    systemctl start hive-metastore
    

    接下来,我们需要检查Hive Metastore的配置。您提供的hive-site.xml配置文件看起来是正确的,特别是hive.metastore.urishive.metastore.warehouse.dir属性。不过,为了保险起见,确保其他配置项也正确无误。

    在确认了Hive Metastore服务运行正常并且配置文件正确之后,我们回到Spark代码部分。在IDEA中运行时,确保你的本地环境与配置文件中的设置匹配。如果你的开发环境不是Hadoop集群而是伪分布式模式(比如使用local[4]作为master),那么Hive Metastore可能不会在9083端口上运行,因为通常这个端口用于集群环境中的Metastore服务。在这种情况下,Spark可能会默认使用本地模式访问Metastore,不需要显式指定hive.metastore.uris

    尝试将代码中的master("local[4]")保留不变,去掉.config("hive.metastore.uris", "thrift://master:9083")这一行,看看是否可以运行。

    这是修改后的代码片段:

    val spark = SparkSession.builder()
      .master("local[4]")
      .appName("Explore")
      .config("spark.sql.warehouse.dir", "hdfs://master:9000/warehouse")
      .enableHiveSupport()
      .getOrCreate()
    

    如果你仍然遇到问题,可能是由于防火墙设置或者网络问题导致IDEA无法连接到Metastore。试着关闭防火墙或者检查网络设置。

    最后,如果你确定所有配置都正确,但还是无法连接,你可以尝试重启IDEA,或者清理项目缓存再试一次。

    如果你还有其他疑问或者问题依然存在,你可以提供更详细的错误信息,这样我可以更好地帮助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见