spark读取hive和mysql的数据

读取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()
相关推荐
·云扬·42 分钟前
深入理解MySQL事务:ACID特性、隔离级别与MVCC原理
数据库·mysql·oracle
AI-小柒44 分钟前
从零入门大语言模型(LLM):系统学习路线与实践指南
大数据·开发语言·人工智能·学习·信息可视化·语言模型·自然语言处理
万邦科技Lafite1 小时前
小红书评论数据一键获取,item_reviewAPI接口讲解
大数据·前端·数据库·chrome·电商开放平台
hhy_smile1 小时前
Python environment and installation
开发语言·python
咋吃都不胖lyh1 小时前
GBDT 中的前向分布算法和贪婪学习
学习·算法
LUCIFER1 小时前
学习随笔:摄像头采集数据后进行视频编解码的常见概念与疑问
学习·音视频
remender9991 小时前
降本增效双赋能,IT人力外包成企业破局新路径
大数据·人工智能·物联网
Elastic 中国社区官方博客2 小时前
Agent Builder,超越聊天框:推出增强型基础设施
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
LXY_BUAA2 小时前
《C++学习》Qt软件安装_20260123
学习
Elastic 中国社区官方博客2 小时前
使用 Elastic Agent Builder 构建语音 agents
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·语音识别