pyspark使用过程中遇到的典型问题及处理办法

珍妮的选择 珍妮的选择     2022-11-30     169

关键词:


PySpark 使用过程中遇到的典型问题及处理办法

前言

不知道为啥, 现在写博客总得弄点前言, 观者无不叹息为何生命中宝贵的 20 秒钟要浪费在这无意义的前言上 ???????????? 好吧, 就是想水点文字, 今天是 7 月的最后一天, 距离零点还有 1 个小时左右, 我想抓住 7 月的尾巴, 再水篇博客, 在 7 月份完成两篇~ 原本是想分享论文的, 但还在酝酿当中. 思来想去, 最快达到目的的方法就是记录一些平时的笔记, 哈哈… 下面的内容考虑在 PySpark 使用过程中, 遇到的一些问题以及处理办法, 以防再次遇到相关问题又要去大量 Google … 总结在一处还是有必要的. 所以本文是会不断更新的. (Flag~)

下面正式进入问题分析.

Failed to create local root dir in /tmp/spark (Spark 无法产生临时目录的问题)

Spark 默认使用 ​​/tmp/spark*​​ 作为临时目录以存储一些临时数据, 如果该默认路径所在的磁盘满了, 会出现报错

Failed to create local root dir in

此时按照博客 ​​Spark运行在Standalone模式下产生的临时目录的问题​​ 中的处理方法, 可以在提交 Spark 任务时加上配置:

--conf spark.local.dir=/home/xxx/spark_tmp \\

使用上面的选项将临时目录修改为 ​​/home​​ 目录下的某个目录;

另一种方法是在 ​​.bashrc​​​ 或者 ​​.zshrc​​​ 文件中设置 ​​SPARK_LOCAL_DIRS​​ 环境变量:

export SPARK_LOCAL_DIRS=/home/xxx/spark_tmp

在命令行中启动 Spark

使用 ​​PYSPARK_DRIVER_PYTHON=ipython pyspark​​ 会比较香.

保存输出结果时报 UnicodeEncodeError 错误

我在使用 ​​saveTextFile​​​ 时有时会遇到 ​​UnicodeEncodeError​​, 可能是因为使用 Python2 同时输出内容有中文的缘故. 要处理有一下思路可以考虑:

  1. 对于 Python2, 可以增加如下代码, 另外注意 Python3 不需要加, 否则会报错, Python3 中已经无​​reload​​ 函数了.
import sys

if sys.getdefaultencoding() != utf-8:
reload(sys)
sys.setdefaultencoding(utf-8)
  1. 另外就是考虑打包 Python3, 处理 UnicodeEncodeError; 选择一个 Anaconda3 或者 miniconda3 发行版, 然后打包, 打包使用如下命令:
tar

生成 ​​miniconda3.tar.gz​​​ 后, 将其上传到 HDFS 上, 比如 ​​hdfs://xxx/yyyy/zzz/​​:

hadoop fs -put miniconda3.tar.gz hdfs://xxx/yyyy/zzz/

之后在提交 Spark 任务的脚本 (​​spark-submit​​ 命令) 中加入如下配置:

--archives hdfs://xxx/yyyy/zzz/miniconda3.tar.gz#pyana \\
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./pyana/miniconda3-latest/bin/python \\
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./pyana/miniconda3-latest/bin/python \\

处理 Spark 的 port binding error

类似于这样的错误:

WARN Utils: Service sparkDriver could not bind on a random free

参考 ​​Port binding error in PySpark​​ 解决.

  • 方法一最省事, 设置​​SPARK_LOCAL_IP​​ 环境变量
export SPARK_LOCAL_IP=127.0.0.1
  • 方法二是对 builder 使用​​.config(spark.driver.host,127.0.0.1)​​, 比如:
spark = SparkSession.builder \\
.config(spark.driver.host,127.0.0.1) \\
.master("local") \\
.enableHiveSupport() \\
.getOrCreate()
  • 方法三是 sc 进行设置:
conf = pyspark.SparkConf().set(spark.driver.host,127.0.0.1)
sc = pyspark.SparkContext(master=local, appName=myAppName,conf=conf)

运行主程序时需导入其他 Python 文件

比如 ​​main.py​​​ 中需要导入来自 ​​utils.py​​ 中的函数:

from utils import *

此时只需要在任务提交命令 ​​spark-submit​​ 的选项中增加:

--py-files ./utils.py

即可. 此外, 还有一些资料显示可以使用 ​​SparkFiles​​ 提供的功能, 但是我还没有用过, 下面给出链接:


rubyonrails的使用过程中,遇到的错误及解决办法

1、/data/drolay11/lcb_saas/tmp/build-147274463612855/vendor/bundle/ruby/2.1.0/bin/rake:symbollookuperror:/data/drolay11/lcb_saas/tmp/build-147274463612855/vendor/bundle/ruby/2.1.0/gems/mysql2-0.3.17/li 查看详情

记一次wordpress安装过程中遇到的问题及解决办法

...主题或安装插件的时候,用到FTP提示用户名密码不正确,使用XFTP也连接不上?A:这是由于根目录的权限过高(777),应该把根目录的权限设置为555,chmod555/var/www/htmlQ:无法将上传的文件移动至wp-content/ 查看详情

win10下安装wampservice过程中遇到的问题及解决办法

今天在电脑上装Wampserver的时候遇到了几个问题,启动Wampserver无法成功,一直显示橙色。若启动成功Wampserver的图标会显示绿色。下面的是解决方法安装在浏览器中搜索Wampserver,点击下载,下载之后安装直接点next,安装完成之后... 查看详情

项目中遇到的超卖问题及解决办法(使用go做测试工具)

  超卖问题:在一个很短的时间内,Mysql的数据状态在取出,比较,提交,或修改中,另外一个进程访问数据导致的超卖问题。  案例:    1.前端没有做限制,如果用户连续点击签到,那么会有多条数据发送到后端,... 查看详情

开发过程中遇到的crash及解决办法(代码片段)

privatebooleanisForeground()ActivityManageractivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo>processes=activityManager.getRunningAppProcesses();if(processes==null||processes.isEmpty())returnfalse;for(ActivityManager.RunningAp... 查看详情

loadrunner测试过程中遇到的问题及解决方法

一、lr录制时弹不出IE浏览器,火狐浏览器中文版的,弹出的却是英文版的解决办法:(1)、配置IE8:打开Internet选项->高级,把“启用第三方浏览器扩展”去掉。重启IE生效。650)this.width=650;"src="http://wiki.imtopka.com/download/attachmen... 查看详情

项目中遇到的某些问题及解决办法

简介  该博文记录了一些平时在工作中遇到的问题及解决办法,某些问题有解决办法,某些问题暂时没有解决办法,如果有大神知道的,请多多指点。如果某些问题有更好的解决办法,也请指教。正文1、在一个方法中用... 查看详情

记录在使用githubactions时出现的permissiondenied问题及办法

...中,特别是现在身处于各种云的环境中,避免不了CI/CD的使用。那么今天说下在使用GitHubActions、AzurePiplines或者是其他CI/CD在使用Linux环境下的可能遇到的问题一个问题,先看下图。上图出现的错误描述的很清楚了:本文来自博客... 查看详情

ios:zbar几个经典问题的解决办法

iphone开发中使用zbar时遇到的几个典型问题解决方法。 在近期的一个ios项目中使用到了一个二维码扫描库(Qrcode)--ZBar,期间遇到2个问题。 1.zbar下载后使用其libzbar.a发现无法再arm7上运行。2.zbar使用过程中,如果多次打开摄像头... 查看详情

flutter单线程异步及isolate使用过程遇到的问题(代码片段)

遇到两个问题:官方子isolate内不能使用插件.解决方案:使用isolate_handler/flutter_isolate代替官方isolate参考链接子isolate处理完耗时操作,传递结果给主isolate的方法:voidsend(Object?message);耗时严重,达秒级,顿了一下,页面才刷新的感觉(未解决... 查看详情

flutter单线程异步及isolate使用过程遇到的问题(代码片段)

遇到两个问题:官方子isolate内不能使用插件.解决方案:使用isolate_handler/flutter_isolate代替官方isolate参考链接子isolate处理完耗时操作,传递结果给主isolate的方法:voidsend(Object?message);耗时严重,达秒级,顿了一下,页面才刷新的感觉(未解决... 查看详情

使用speex动态链接库过程中遇到问题及解决方法

...发现自己是没有把动态链接库的目录添加到环境变量中,使用查找工具,查找了一下我的libspeex.so是在目录:/usr/local/lib下面添加方法:sudovim.basrc& 查看详情

git使用具体解释egit使用过程中遇到的问题及解决的方法

1.   Git错误non-fast-forward后的冲突解决问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不同意你直接把你的代码覆盖上去。于是你有2个选择方式:1.强推,即利用强覆盖方式用你本地的代码... 查看详情

几个开发中遇到的问题及解决办法

1StatusCode:404,ReasonPhrase:‘NotFound‘,Version:1.1解决办法:将请求中的localhost改为实际的IP2HttpClient无法调用PostAsJsonAsync()方法解决办法:添加System.Net.Http.Formatting的依赖引用3:ASP.NETCOREwebapi客户端访问Controller时找不到对象的方法,报出... 查看详情

postman批量接口测试/批量导入/批量参数化简要全过程及遇到问题处理方法

...de.code===200;tests["Bodymatchesstring"]=responseBody.has("success");可以使用右侧的一些建议方法添加断言,如下图:   4、规范化导入文件。要积极利用excel的公式,将业务提供的文档转换为各个入参要求的格式数值。另外要把xlsx... 查看详情

iosflutter混编遇到的问题及解决办法(代码片段)

1.UnhandledException:MissingPluginException(Noimplementationfoundformethod…Flutter中使用的三方插件,在与插件通信时无法找到插件解决:要添加这句:[GeneratedPluginRegistrantregisterWithRegistry:flutterViewControll 查看详情

手机端页面在项目中遇到的一些问题及解决办法(代码片段)

1.解决页面使用overflow:scroll在iOS上滑动卡顿的问题? 首先你可能会给页面的html和body增加了height:100%,然后就可能造成IOS上页面滑动的卡顿问题。解决方案是: (1)看是否能把body和html的height:100%去除掉。(2)在滚动的容器中增加... 查看详情

项目中遇到的问题及解决办法

1、中文乱码问题通过编写一个类实现Filter(过滤器)接口,重写里面的方法,并在doFilter这个方法里面设置字符编码为utf-8,通过ServletRequest.setCharacterEncoding(”utf-8”)来设置;这里之所以用自定义filter(过滤器)来解决这个问... 查看详情