首页 > 数据库 >spark读取hive和mysql的数据

spark读取hive和mysql的数据

时间:2024-12-13 19:00:21浏览次数:7  
标签:__ mysql hive environ sql spark os

读取hive数据

本质上:SparkSQL访问了Metastore服务获取了Hive元数据,基于元数据提供的地址进行计算
启动以下服务:
start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver
/opt/installs/spark/sbin/start-history-server.sh
hive-server-manager.sh start metastore

修改配置文件

cd /opt/installs/spark/conf
新增:hive-site.xml
vi hive-site.xml

在这个文件中,编写如下配置:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://bigdata01:9083</value>
    </property>
</configuration>

接着将该文件进行分发:
xsync.sh hive-site.xml
import os

from pyspark.sql import SparkSession


if __name__ == '__main__':

    # 配置环境
    os.environ['JAVA_HOME'] = 'E:/java-configuration/jdk-8'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'E:/applications/bigdata_config/hadoop-3.3.1/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    os.environ['HADOOP_USER_NAME'] = 'root'

    spark = SparkSession.builder \
             .master("local[2]") \
             .appName("第一个sparksql案例") \
             .config("spark.sql.warehouse.dir", 'hdfs://shucang:9820/user/hive/warehouse') \
             .config('hive.metastore.uris', 'thrift://shucang:9083') \
             .config("spark.sql.shuffle.partitions",2) \
             .enableHiveSupport() \
             .getOrCreate()

    spark.sql("select * from yhdb01.sql2_1").createOrReplaceTempView("sql2_1")
    spark.sql("select * from sql2_1").show()

    spark.stop()

spark读取mysql表数据

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

在pyspark中放入mysql的驱动包

windows
找到工程中pyspark库包所在的环境,将驱动包放入环境所在的jars目录中
C:\Users\35741\miniconda3\Lib\site-packages\pyspark\jars

linux
cd /opt/installs/anaconda3/lib/python3.8/site-packages/pyspark/jars
需要在所有节点的pyspark下
import os

from pyspark.sql import SparkSession

if __name__ == '__main__':

    os.environ['JAVA_HOME'] = 'E:/java-configuration/jdk-8'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'E:/applications/bigdata_config/hadoop-3.3.1/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    
    spark = SparkSession.builder.master("local[2]").appName("spark案例").config("spark.sql.shuffle.partitions",2).getOrCreate()
    
    # 方式一:spark.read.jdbc
    dictUsername = {"user": "root", "password": "root"}
    empDf = spark.read.jdbc(url="jdbc:mysql://localhost:3306/mydb01",table="emp",properties=dictUsername)
    
    empDf.createOrReplaceTempView("emp")
    
    spark.sql("""
    select * from emp
    """).show()
    
    # 方式二:spark.read.format 最后需要 load一下
    empDf2 = spark.read.format("jdbc") \
              .option("driver", "com.mysql.cj.jdbc.Driver") \
              .option("url", "jdbc:mysql://localhost:3306/mydb01") \
              .option("dbtable", "emp") \
              .option("user","root") \
              .option("password","root").load()
    
    empDf2.createOrReplaceTempView("emp2")
    
    spark.sql("""
    select * from emp
    """).show()

标签:__,mysql,hive,environ,sql,spark,os
From: https://blog.csdn.net/weixin_52642840/article/details/144458092

相关文章

  • spark的共享变量
    因为RDD在spark中是分布式存储1、python中定义的变量仅仅在driver中运行,在excutor中是获取不到值的——广播变量2、若定义了一个变量进行累加,先分别在driver和excutor中进行累加,但是结果是不会主动返回给driver的——累加器BroadcastVariables广播变量driver中存放python......
  • mysql将公司数据随机挂在部门身上
    1.创建示例数据CREATETABLEdepartment_table(company_codeVARCHAR(10)COMMENT'公司编码',company_nameVARCHAR(50)COMMENT'公司名称',department_codeVARCHAR(10)COMMENT'部门编码',department_nameVARCHAR(50)COMMENT'......
  • 利用MySQL和gin框架实现的留言板功能
    接口文档和详细代码看这里~前言本文将介绍一个基于Go语言和Gin框架实现的留言板系统。该系统支持用户注册、登录、发布留言、回复留言、关闭留言、获取所有留言等功能。本文将通过代码示例详细解读系统的结构、功能实现。结构本系统主要由以下几个模块构成:API:负责处理......
  • MySQL性能优化总结
    1. 数据库优化目的1.1. 避免出现页面访问错误1).由于数据库连接timeout产生页面5xx错误;2).由于慢查询造成页面无法加载;3).由于阻塞造成数据无法提交;1.2. 增加数据库的稳定性1).很多数据库的问题都是由于低效的查询引起的;1.3. 优化用户体验1).流畅页面的访问速度......
  • IO模型和mySQL缓冲
    ServletWebServerFactoryAutoConfigurationSpringApplicationRunListenerEventPublishingRunListener->通过SimpleApplicationEventMulticaster发布spring事件,持有List,调用onApplicationEventnewSpringApplication->setListeners((Collection)getSpringFactorie......
  • MySQL(二)数据的检索和过滤
     使用频率最高的SQL语句应该就是select语句了,它的用途就是从一个或多个表中检索信息,使用select检索表数据必须给出至少两条信息:想选择什么,以及从什么地方选择 一、检索数据1、检索单个列selectcolumnfromtable;该SQL语句的检索结果将返回表中的所有行,数据没有过滤(过......
  • node.js毕设基于hive线上问诊系统数据仓库 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于线上问诊系统数据仓库的研究,现有研究主要集中在系统的功能实现、用户体验优化等方面。专门针对基于hive构建线上问诊系统数据仓库的研究较少。在国......
  • MySQL-全面优化MySQL服务器
    1、EXPLAIN分析查询SQL的执行计划‌MySQL的EXPLAIN命令主要用于分析SQL查询的执行计划,帮助理解MySQL如何处理SQL语句,并优化查询性能。‌(1)EXPLAIN的作用1)、‌表的读取顺序‌:显示MySQL如何读取表和执行JOIN操作。2)、‌数据读取操作的操作类型‌:如全表扫描、索引扫描等。3)、......
  • MySQL InnoDB 中的数据页
    文章目录1.数据库的存储结构概述1.1表空间(Tablespace)1.2段(Segment)1.3区(Extent)1.4页(Page)2.InnoDB数据页的深入解析2.1数据页的物理结构2.2数据页中的行存储2.3数据页满时的分裂与合并2.4大字段(LOB)的存储机制2.5页分裂与合并的影响3.B+Tree查询逻辑的实现......
  • MySQL InnoDB 的锁机制
    文章目录1.引言2.锁的基础概念2.1什么是锁?2.2锁的核心实现原理2.3InnoDB中锁的分类3.悲观锁与乐观锁3.1悲观锁详解3.2乐观锁详解3.3两种锁策略的性能对比4.系统锁4.1系统锁的使用场景4.2系统锁的实现方式4.3系统锁的优缺点5.表锁5.1表锁的内部实现5.2......