通过 --py-files 可以在pyspark中可以顺利导入

文件import问题

问题: 在脚本中import了其他文件, pyspark中可以运行, 但是在spark-submit中总是失败

假定我们的任务脚本为 app.py , 大体代码像这样:

from pyspark import SparkContext ## 加载通用脚本 import common # # ......... # if __name__ == "__main__": sc = SparkContext(appName="ACoolApp") # # run #

公用函数的放到了 common.py 文件中. 通过 --py-files 可以在pyspark中可以顺利导入:

# success pyspark --py-files lib/common.py > import common

而使用spark-submit来提交 app.py 2881064151总是失败

# import error spark-submit --py-files lib/common.py app.py

找了好久的解决办法, 最后参考了 这里 . 简单来说, 所有的import操作必须在context完成之后. pyspark之所以不报错就是因为context已经初始化好了. 所以我们简单改下 app.py 中import的位置就可以了:

if __name__ == "__main__": sc = SparkContext(appName="ACoolApp") import common

数据保存至mysql

问题: 将数据写入mysql

这里不多说, 方法可以直接参考 这里 . 关键点有两个:

引入mysql的jdbc jar包 设置好对应的的driver, 否则会报 park python java.sql.SQLException: No suitable driver 的错误

直接来个代码片段:

url = ‘jdbc:mysql://%s/%s‘ % (db_host, db_name) properties = { ‘user‘: db_username, ‘password‘: db_password, ‘driver‘: ‘com.mysql.jdbc.Driver‘, } records.write.jdbc(url=url, table=db_table, mode=‘append‘, properties=properties)

最后

时间: 2024-12-21 21:32:52

通过 --py-files 可以在pyspark中可以顺利导入的相关文章

pyspark 中启动 jupyter notebook

还是打算选择python学习spark编程 因为java写函数式比较复杂,scala学习曲线比较陡峭,而且sbt和eclipse和maven的结合实在是让人崩溃,经常找不到主类去执行 python以前没用过但是名声在外,可以很方便的进行数据处理 在eclipse中集成pydev插件去编写python程序已经学习过了 今天使用了一下anaconda集成一起的python开发环境,感觉很不错 尤其是ipython notebook或者称为jupyter notebook很方便的进行可视化 但是如何在

[Python]将Excel文件中的数据导入MySQL

Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已有的数据,还要添加一列,名为“at_company”,值为821. 流程 (1)获取excel文件列表,并根据excel文件名确定之后需要创建的table名: (2)连接mysql (3)创建table (4)插入数据 (5)断开连接 依赖模块 1. xlrd # to read excel fil

如何使用免费控件将Word表格中的数据导入到Excel中

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要将word表格中的数据导入到Excel中.相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能.这里,我使用了两个免费API, DocX和Spire.Xls. 有需要的朋友可以下载使用.下载地址: DocX:codeplex官网 Spire.Xls: E-iceb

python settings 中通过字符串导入模块

1. 项目文件结构 set_test ├─ main.py # 入口函数 │ ├─notify # 自定义的模块 │ ├─ email.py # 自定义模块 │ ├─ msg.py # 自定义模块 │ ├─ wechat.py # 自定义模块 │ └─ __init__.py # 模块导入初始化函数 │ └─set_test # 总配置文件 └─ settings.py # 这个项目的架构是很多开源项目的架构标准 2. 接下来看看 文件中的内容 2.1. __init__.py 文件的内容 **

Altium中Logo的导入方法及大小调整

Altium中Logo的导入方法及大小调整 LOGO识别性是企业标志的重要功能之一,特点鲜明.容易辨认,很多客户需要在PCB设计阶段导入LOGO标示归属特性.如果LOGO是CAD图纸,可以直接按照前面DXF导入方法进行导入,如果LOGO是图片文档,我们可以按照如下操作进行导入. 1.位图的转换,利用Windows画图工具,把图片转换成单色的BMP位图,如果转成单色位图失真了的话可以,转成16色位图或者其他位图,但一定要是位图才行,LOGO图片像素较高时,转换的LOGO更清晰,转换完成之后放置到桌

Python中的相对导入语法

Python中支持相对导入语法,即可以相对于某一个package进行导入,具体语法如下: # 导入"./dir2/spam.py", .表示当前目录 from .dir2 import spam # 导入"./../dir3/spam.py", .表示当前目录, ..表示上一级目录 from ..dir3 import spam 要使用相对导入语法,必须满足以下3个条件: 1 该语法只能在package中使用(即使用该语法的文件位于可以位于一个普通的package中

详解Python中的相对导入和绝对导入

Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 Python import 的步骤 python 所有加载的模块信息都存放在 sys.modules 结构中,当 import 一个模块时,会按如下步骤来进行 如果是 import A,检查 sys.modules 

python中根据字符串导入模块module

python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlib modname = 'datetime' datetime_module = importlib.import_module(modname) print(datetime_module) # <module 'datetime' from 'C:\\Users\\huchengyue\\AppData\\Local\\Programs\\Pyth

django 将原本数据库中的表导入models中

django 将原本数据库中的表导入models中 连接mysql数据库(创建app,修改settings配置,使用pymysql连接mysql数据库) 根据数据库原有的数据生成对应的models模型文件 生成模型文件 python3 manage.py inspectdb 将模型文件导入app中 python3 manage.py inspectdb > app名/models.py 原文地址:https://www.cnblogs.com/lucky75/p/11380648.html