spark&hive--练习2

需求:

在hive中创建对应表,并且导入数据,使用spark完成对应的查询

stu_name course score

张三 语文 98

张三 数学 95

张三 英语 89

李四 语文 97

李四 数学 88

李四 英语 90

1.hive建表语句,导入数据语句,从linux文件系统导入

2.使用sparksql查询上述表,期望结果如下,并且将计算结果添加到mysql

name 语文 数学 英语

张三 98 95 89

李四 97 88 90

1.hive建表语句,导入数据语句,从linux文件系统导入

sql 复制代码
create table student(
   stu_name   string,
   course     string,
   score      int
)
row format delimited
fields terminated by ',';

load data local inpath '/root/stu.txt' into table student;

select * from default.student;

2.使用sparksql查询上述表,期望结果如下,并且将计算结果添加到mysql

【注:表名前边加上数据库。如:default.student】

python 复制代码
from pyspark.sql import SparkSession

if __name__ == '__main__':
    spark = SparkSession.builder \
        .appName("测试") \
        .config("hive.metastore.uris", 'thrift://hadoop11:9083') \
        .enableHiveSupport() \
        .getOrCreate()


    df = spark.sql("""
        select stu_name,
               max(case when course='语文' then score else null end) chinese,
               max(case when course='数学' then score else null end) math,
               max(case when course='英语' then score else null end) english
        from default.student
        group by stu_name
    """)

    props = {'user': 'root', 'password': '123456', 'driver': 'com.mysql.jdbc.Driver'}
    df.write.jdbc(url='jdbc:mysql://hadoop11:3306/test1', table='df_student', properties=props)

    spark.stop()

sql结果:

相关推荐
aiweker3 分钟前
Python处理数据库:MySQL与SQLite详解
数据库·python
Amd79430 分钟前
Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践
python·postgresql·数据分析·开发·最佳实践·psycopg2·数据库集成
查理零世1 小时前
【算法】回溯算法专题③ ——排列型回溯 python
python·算法·深度优先
Ethel L1 小时前
Python - pyautogui库 模拟鼠标和键盘执行GUI任务
python
Elastic 中国社区官方博客2 小时前
使用 Elastic Cloud 中的异常检测来识别欺诈
大数据·人工智能·elasticsearch·搜索引擎·全文检索
想做富婆2 小时前
Hive:日志,hql运行方式,Array,行列转换
数据仓库·hive·hadoop
游王子3 小时前
Python NumPy(6):修改数组形状、翻转数组、修改数组维度
开发语言·python·numpy
稚辉君.MCA_P8_Java4 小时前
ElasticSearch view
大数据·linux·elasticsearch·搜索引擎·全文检索
枫叶落雨2224 小时前
15JavaWeb——Maven高级篇
linux·python·maven
流形填表5 小时前
用FormLinker实现自动调整数据格式,批量导入微软表单
python·microsoft·flask