冷月半明 2023-12-19 17:39 采纳率: 84.6%
浏览 6
已结题

pyspark查询处理两个hive表出错

假如我有两个hive表,结构分别为
| id| title|average_sentiment|
| id| title|price| average_sentiment|
,我该如何使用pyspark,执行以下逻辑?
若表一中有一行id1,表二中没有相应行id2=id1,取表一id1哪行。
若表二中有一行id2,表一中没有相应行id1=id2,取表二id2哪行。
若表一中有一行id1,表二中存在id2=id1,那一行的average_sentiment字段和再除2

在spark中编写代码以及结果如下:
相关代码:

 sqlstr = ("SELECT COALESCE(t1.id, t2.id) AS id,"
              " COALESCE(t1.title, t2.title) AS title, "
              "CASE WHEN t1.id IS NOT NULL AND t2.id IS NOT NULL "
              "THEN (t1.average_sentiment + t2.average_sentiment) / 2 "
              "WHEN t1.id IS NOT NULL"
              " THEN t1.average_sentiment "
              "ELSE t2.average_sentiment END AS average_sentiment"
              " FROM cjw_data.qvnasentiment t1 "
              "FULL OUTER JOIN cjw_data.xiechengsentiment t2 "
              "ON t1.id = t2.id;")

    # sqlstr = ("SELECT * FROM  cjw_data.qvnasentiment LIMIT 5;")
    df = spark.sql(sqlstr).limit(5)
    df.show(5)
    print("共有",df.count(), "行数据")
    df1 = spark.table("cjw_data.qvnasentiment")
    df2 = spark.table("cjw_data.xiechengsentiment")
    df1 = df1.drop("price")
    df1.show(2)
    df2.show(2)
    result = df1.join(df2, on="id", how="outer")
    print(result.count())
    result.show(5)

结果截图:

img


为什么df1.join后和之前sql查询的结果id都是null?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 12月22日
    • 修改了问题 12月19日
    • 创建了问题 12月19日

    悬赏问题

    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错
    • ¥15 单片机学习顺序问题!!
    • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
    • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)