pyspark在yarn上运行出现的问题

2022-09-07 17:15:12,431 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, node3, e
Error from python worker:
  Could not find platform independent libraries <prefix>
  Could not find platform dependent libraries <exec_prefix>
  Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
  Python path configuration:
    PYTHONHOME = (not set)
    PYTHONPATH = '/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/xm/filecache/11/__spark_libcache/xm/appcache/application_1662541746188_0001/container_1662541746188_0001_01_000002/pyspark.zintainer_1662541746188_0001_01_000002/py4j-0.10.9-src.zip'
    program name = 'python'
    isolated = 0
    environment = 1
    user site = 1
    import site = 1
    sys._base_executable = ''
    sys.base_prefix = '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho'
    sys.base_exec_prefix = '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho'
    sys.executable = ''
    sys.prefix = '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho'
    sys.exec_prefix = '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho'
    sys.path = [
      '/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/xm/filecache/11/__spark_libs__71874246
      '/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/xm/appcache/application_1662541746188_
      '/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/xm/appcache/application_1662541746188_
      '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python38.zip',
      '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.8',
      '/tmp/build/80754af9/python_1618343417471/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/lib-dynload',
    ]
  Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
  Python runtime state: core initialized
  ModuleNotFoundError: No module named 'encodings'

编写的Pyspark代码在yarn上执行的时候,遇到的问题,其实已经配置了PYTHONHOME了, 这里虽然说的是(no set) 不用管, 主要是PYTHONPATH没有配置造成的, 因为使用的是自己安装的anaconda3, 所以此时的pythonpath需要自己找一下, 方法很简单如下

import sys

print(sys.path)

 将得到的结果中是目录的全部记录下来, 添加pythonpath的到profile的环境变量中即可, 具体的环境变量如下:

export PYTHONPATH="/usr/anaconda3/lib:/usr/anaconda3/lib/python3.8:/usr/anaconda3/lib/python3.8/lib-dynload:/usr/anaconda3/lib/python3.8/site-packages"

然后 source  /et/profile  一下, 重新运行就没问题了

但是 但是 但是

在以后需要使用yum安装软件的时候, 需要在终端先执行一下,下面两个命令, 否则yum找的是python3的代码不是python2的, 这时候即使修改了/usr/bin/yum和/usr/libexec/url也是不管用的

unset PYTHONPATH
unset PYTHONHOME

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Hadoop YARN运行PySpark,需要按照以下步骤操作: 1. 安装Hadoop和Spark,并配置好环境变量。 2. 在Hadoop集群上启动YARN服务。 3. 在Spark的conf目录下,创建一个新的spark-defaults.conf文件,并添加以下配置: ``` spark.master yarn spark.submit.deployMode client spark.driver.memory 1g spark.executor.memory 1g spark.executor.instances 2 spark.yarn.appMasterEnv.PYSPARK_PYTHON /usr/bin/python3 ``` 其中,`spark.master`设置为`yarn`,表示使用YARN作为Spark的资源管理器;`spark.submit.deployMode`设置为`client`,表示在客户端模式下提交应用程序;`spark.driver.memory`和`spark.executor.memory`分别设置为1g,表示每个Driver和Executor的内存大小;`spark.executor.instances`设置为2,表示启动2个Executor;`spark.yarn.appMasterEnv.PYSPARK_PYTHON`设置为`/usr/bin/python3`,表示使用Python3作为PySpark的解释器。 4. 在PySpark脚本中,添加以下代码: ``` from pyspark.sql import SparkSession spark = SparkSession.builder.appName("PySparkExample").getOrCreate() # 在这里编写PySpark代码 spark.stop() ``` 其中,`SparkSession`用于创建Spark应用程序的入口点;`appName`设置应用程序的名称;`getOrCreate`方法用于获取现有的SparkSession或创建一个新的SparkSession。 5. 在命令行中,使用以下命令提交PySpark应用程序: ``` spark-submit --master yarn --deploy-mode client --py-files <path-to-py-files> <path-to-pyspark-script> ``` 其中,`--master`设置为`yarn`,表示使用YARN作为Spark的资源管理器;`--deploy-mode`设置为`client`,表示在客户端模式下提交应用程序;`--py-files`指定需要上传到集群的Python文件;`<path-to-pyspark-script>`指定PySpark脚本的路径。 6. 提交应用程序后,可以在YARN的Web界面上查看应用程序的运行情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值