解决方案:

mv mysql-connector-java-8.0.20.jar $SPARK_HOME/jars/

驱动文件mysql-connector-java-8.0.20.jar是从maven仓库下载的:

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.20

注意,这个报错的设置,需要搞清楚当前spark是什么mode,如果盲目照搬stackoverflow和百度,你会发现无效!

spark-defaults.conf 中设置如下:

spark.driver.extraClassPath   = /home/appleyuchi/bigdata/apache-hive-3.0.0-bin/lib/mysql-connector-java-8.0.20.jar
spark.executor.extraClassPath = /home/appleyuchi/bigdata/apache-hive-3.0.0-bin/lib/mysql-connector-java-8.0.20.jar spark.jars = /home/appleyuchi/bigdata/apache-hive-3.0.0-bin/lib/mysql-connector-java-8.0.20.jar

测试方法如下:

①pyspark --master yarn(然后在交互是模式中输入交互式代码)

②spark-submit --master yarn --deploy-mode cluster 源码.py

import pandas as pd
from pyspark.sql import SparkSession
from pyspark import SparkContext
from pyspark.sql import SQLContext def map_extract(element):
file_path, content = element
year = file_path[-8:-4]
return [(year, i) for i in content.split("\n") if i] spark = SparkSession\
.builder\
.appName("PythonTest")\
.getOrCreate() res = spark.sparkContext.wholeTextFiles('hdfs://Desktop:9000/user/mercury/names',
minPartitions=40) \
.map(map_extract) \
.flatMap(lambda x: x) \
.map(lambda x: (x[0], int(x[1].split(',')[2]))) \
.reduceByKey(lambda x,y:x+y) df = res.toDF(["key","num"]) #把已有数据列改成和目标mysql表的列的名字相同
# print(dir(df))
df.printSchema()
print(df.show())
df.printSchema() df.write.format("jdbc").options(
url="jdbc:mysql://Desktop:3306/leaf",
driver="com.mysql.cj.jdbc.Driver",
dbtable="spark",
user="appleyuchi",
password="appleyuchi").mode('append').save()

PySpark 报错 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver的更多相关文章

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

    java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLC ...

  2. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 找不到jar包的问题,路径问题

    1.参考连接: https://blog.csdn.net/huangbiao86/article/details/6428608 折腾了一上午,找到了这错误的原因.哎……悲剧! 确认包已经被导入we ...

  3. idea数据库报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    通过idea操作数据库,进行数据的增加,运行时报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 原因:没有导入mysql-connec ...

  4. java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0 (unable to load class [com.mysql.cj.jdbc.Driver])

    原因: com/mysql/cj/jdbc/Driver是6.0版本的驱动,兼容JDK8环境,不兼容JDK7环境,在基于jdk7的tomcat中编译运行会出错,在基于jdk8的tomcat中编译运行则 ...

  5. 报错:java.lang.ClassNotFoundException: io.opentracing.util.GlobalTracer

    报错:java.lang.ClassNotFoundException: io.opentracing.util.GlobalTracer 近来在做一个在线教育的项目,课程信息放在数据库,而视频放在阿 ...

  6. maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

    主要原因是maven项目里面的jar包吗,没有导入到项目中 maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframewor ...

  7. 项目报错java.lang.ClassNotFoundException: org.common.SessionListener

    现象:项目报错java.lang.ClassNotFoundException: org.common.SessionListener,并且myeclipse左侧Package Explorer中项目 ...

  8. maven 项目启动tomcat报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    maven项目启动tomcat报错: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi ...

  9. maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener

    环境:Groovy/Grails Tool Suite 3.1.0.RELEASE(BASED ON ECLIPSE JUNO 3.8.1).JDK1.6.Maven3.05.Tomcat6 错误描述 ...

  10. MapReduce 程序运行报错 java.lang.ClassNotFoundException解决方法

    在创建自定义的Mapper时候,编译正确,但上传到集群执行时出现错误: 11/16/05 22:53:16 INFO mapred.JobClient: Task Id : attempt_20111 ...

随机推荐

  1. python之object类

    object类 如python之继承及其实现方法这一节提到过的,object类是所有类的父类,因此所有类都有object类的属性和方法. 如python之封装及私有方法使用过的,内置函数dir()可以 ...

  2. 【uniapp】【微信小程序】【外包杯】如何创建分包

    意义:分包可以减少小程序数次启动时的加载时间 1.创建分包的根目录 2.在page.json中,和pages节点平级的位置声明节点,用来定义分包的相关结构 3.在subpkg目录上新建页面 4.完成了

  3. 【结对作业】第一周 | 学习体会day01

    周一老师布置了小组结对作业,内容如下: 我们今天实现了数据库的建立,页面的设计,以及前后端查询的操作,具体实现如下

  4. python函数定义、调用、参数、返回

    python函数定义语法: 定义: Def foo(): print('bar') print('bar2') 如果函数内容特别少,可以一行定义 : Def foo():   print('bar') ...

  5. python原生数据类型(上)

    # 查看数据 print('hello world') # 查看数据类型 type('hello world') hello world str 1 数据类型定义 1.1 不可变数据类型 # 数值 # ...

  6. [ARC137E] Baker

    Problem Statement Snuke runs a bakery. He is planning for the next $N$ days. Let us call these days ...

  7. skywalking插件工作原理剖析

    1. 官方插件二次开发 前面在介绍skywalking-agent目录时,提到了它有一个插件目录,并支持动态的开发插件.其实skywalking默认已经提供大部分框架的插件了,一般情况下不需要额外开发 ...

  8. SpringBoot整合Liquibase

    1.是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更.它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化 ...

  9. Python实现模块热加载

    为什么需要热加载 在某些情况,你可能不希望关闭Python进程并重新打开,或者你无法重新启动Python,这时候就需要实现实时修改代码实时生效,而不用重新启动Python 在我的需求下,这个功能非常重 ...

  10. C++ Qt开发:MdiArea多窗体组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍MdiArea ...