您现在的位置是:主页 > news > 哈尔滨建设网站公司哪家好/怎么做盲盒

哈尔滨建设网站公司哪家好/怎么做盲盒

admin2025/5/19 19:41:52news

简介哈尔滨建设网站公司哪家好,怎么做盲盒,电商网站建设 网站定制开发,做网站套模板1. 写在前面 今天花费了也算一天的时间在采坑, 特意借这个时间记录一下整个采坑的过程。 这次要做的事情是这样, 分别在服务器上和本地的pycharm上运行pyspark程序, 程序很简单,就是wordcount, 代码如下:…

哈尔滨建设网站公司哪家好,怎么做盲盒,电商网站建设 网站定制开发,做网站套模板1. 写在前面 今天花费了也算一天的时间在采坑, 特意借这个时间记录一下整个采坑的过程。 这次要做的事情是这样, 分别在服务器上和本地的pycharm上运行pyspark程序, 程序很简单,就是wordcount, 代码如下:…

1. 写在前面

今天花费了也算一天的时间在采坑, 特意借这个时间记录一下整个采坑的过程。

这次要做的事情是这样, 分别在服务器上和本地的pycharm上运行pyspark程序, 程序很简单,就是wordcount, 代码如下:

from pyspark import SparkContextsc = SparkContext('local[2]', 'wordcount')
rdd = sc.textFile('file:///home/hduser/bigdata/1.txt').flatMap(lambda x: x.split()).map(lambda x: (x, 1)).reduceByKey(lambda a, b: a+b)sc.collect()

把这个程序分别放到服务器的命令行和本地的pycharm中进行运行, 这其中的环境配置踩了一些坑, 这里要来记录一下。

这次比较大的收获就是使用本地的Pycharm连接远程服务器上的python解释器,然后在里面可以运行pyspark程序了,并且能够做到本地与远程的代码同步, 这样的好处,就是开发的时候,可以直接借助本地的Pycharm进行开发程序, 然后就直接同步到远程的服务器上去, 非常的方便,再也不用在远程服务器的命令行中运行pyspark程序了,哈哈。

下面开始走一遍, 首先, 我目前的版本配置:

  • Hadoop 2.6.0
  • Spark 1.4.1

python环境的搭建用的是anaconda3, 里面的python版本必须使用3.6以下, 我用的是python3.5.4。 否则, 运行pyspark会报错。

下面说一下已经完成的准备工作, Hadoop集群搭建完成, 1个master, 2个DataNode, Spark已经安装好。Anaconda3安装好。

2. 服务器上运行pyspark, 统计单词次数

下面先使用服务器运行pyspark, 然后在里面运行自带的wordcount程序。 一开始,没有意识到python版本的问题, 所以就采用了最新的版本3.8多,这时候, 首先激活anaconda环境。
输入pyspark, 出现了第一个报错TypeError: namedtuple() missing 3 required keyword-only arguments: 'rename', 'defaults', and 'module'
在这里插入图片描述
这个的报错原因是pyspark和python的运行版本不匹配, python的版本太高了, 网上搜了一下发现spark1.4.多支持的python版本是3.6以下,所以就新建立了一个虚拟环境bigdata, 在里面用了python3.5.4的版本, 此时, 运行pyspark成功。

在这里插入图片描述
在这里面就可以直接运行下面代码了:

sc = SparkContext('local[2]', 'wordcount')
rdd = sc.textFile('file:///home/hduser/bigdata/1.txt').flatMap(lambda x: x.split()).map(lambda x: (x, 1)).reduceByKey(lambda a, b: a+b)sc.collect()

或者还可以, 在bigdata_env里面输入python,打开python解释器, 然后尝试运行命令:

from pyspark import SparkContext

这时候遇到了一个报错: "No module named "pyspark"", 也就是在bigdata_env里面, python找不到pyspark包,确实, 我们的确没有在这里面安装pyspark呀, 那到底怎么在这个环境下运行pyspark程序呢? 现在的问题是我们的pyspark在spark里面, 在bigdata_env里面肯定是找不到这个包了, 所以我们就需要把pyspark放到环境变量里面, 让bigdata_env能够找到它。 也就是我们需要再配置一波环境变量, 下面是需要加的一行代码:
在这里插入图片描述
这样, 我们就能在bigdata_env环境下,进入python, 然后这样了哈哈。
在这里插入图片描述
这样,就能够在anaconda里面使用pyspark了。

3. 本地Pycharm上运行上面的pyspark代码,统计单词个数

虽然上面能够在anaconda里面使用pyspark包了, 但是这个是在服务器上,且需要命令行里面敲代码, 一旦代码量上去了,这样写起来非常不方便, 也没法提示和检查错误。 而Pycharm是一款特别适合开发python程序的IDE, 所以下面我想的是用本地的Pycharm去运行上面的那段程序, 这样以后开发的时候,就需要在本地的pycharm里面写程序就OK了,会非常方便。

顺带提一句就是如何使用免费的JetBrains公司的产品(pycharm,IntelJ等)? 如果是学生的话,可以使用学生邮箱进行注册登录, 就可以免费用了,不用花任何时间找什么激活的东西哈。如何注册, 来这里

下面就是实现上面的这个想法, 当然,废了半天劲,最后成功了, 这是最后的效果。
在这里插入图片描述
说一下这是个啥情况, 就是在我本地的Windows的Pycharm上, 写的pyspark程序, 然后直接点击运行, 就可以得到下面的结果。 pyspark环境是搭在了远程的服务器上。并且我本地的工程项目直接和服务器上的工程项目进行了关联, 只要在这里面写任何的python代码, 都会自动的同步到远程的文件上去。 这样,就省去了在服务器上使用pycharm或者在命令行里面敲程序了。

探索了半天,发现竟然还能这么玩, 神器,哈哈。 那是怎么做到的呢? 两步:

  1. pycharm需要用服务器上的python解释器,毕竟这里写的代码是pyspark代码, 而pyspark是搭建到了远程服务器上, 所以我们解释这些python代码的时候,也要用服务器上的python解释器。
  2. 配置好python解释器之后, 我们还需要告诉远程的python解释器,运行pyspark程序的时候,那些包要去哪里找到,毕竟远程的python解释器在anaconda里面, 而pyspark包都在spark里面,虽然上面在服务器上跑的时候,我们没有特别告诉,那是因为我们把pyspark配置到了环境变量里面, 如果python解释器在anaconda里面找不到,就去环境变量里面去找,然后就找到了。 但是这里不行, 毕竟我们是从Windows上运行的pyspark程序,得需要明确指定出pyspark在哪里。

这就是这里的逻辑了,下面具体看一下这两步。

3.1 pycharm里面用服务器上的解释器

打开pycharm, 新建立一个python 工程, 在这里面配置python解释器的时候,选下面这个:
在这里插入图片描述
指定了本地目录和服务区上对应目录之后,就可以实现本地文件和远程文件的同步操作, 只要在本地写了代码, 就会同步到远程上去。

这里的服务器上python解释器要注意一下, 一开始如果没有这个, 就点击右边的三点,出现

在这里插入图片描述
在这里面添加新的python解释器。一般,管理复杂的python环境, 会用到anaconda, 从这里面会建立不同的虚拟环境,然后安装不同的包去运行不同的python项目。所以在pycharm运行python程序,比较重要的一环就是为程序指定解释器,进行翻译。

这样就可以使用远程服务器的解释器了。 但这样还不可以运行pyspark程序, 会报错误说找不到pyspark里面的包, 首先,还是会报"No module named "pyspark"" ,所以在前面需要指定一下spark的路径, spark里面的python路径, py4j这个。

import os
import sys   # sys.path是python的搜索模块的路径集,是一个listos.environ['SPARK_HOME'] = '/usr/local/spark'
sys.path.append('/usr/local/spark/python')
sys.path.append('/home/hduser/anaconda3/envs/bigdata_env/bin/python3.5')
sys.path.append('/usr/local/spark/python/lib/py4j-0.8.2.1-src.zip')

这个地方当然不是固定的套路, 但是逻辑是一样的, 如果一开始包什么找不动包了, 模块了,大部分原因就是在这里, 有些东西我们需要指定一下子。否则程序不知道去哪找,比如如果没有最下面这个, 就会报找不到py4j这个包ImportError: No module named 'py4j'“。我这里是报这些,如果报别的包,就需要手动找到那包在哪里,然后加入到这里, 比如有可能还会报找不到JAVA等, 就在加一个JAVA_HOME等,所以这里的逻辑就是python解释器找不到相应的包,我们得给他指定别的路径让它去找。

这时候, 再点击运行, 会发现运行的过程中还会报错:

java.io.IOException: Cannot run program "python": error=2, 系统找不到指定的文件

这个问题找的挺痛苦,因为网上很少有这么搞的, 所以给出的解决办法貌似都不可行。 后来找到了解决办法, 这原因是运行的时候, pyspark底层还是调用Java代码, 在调用Java的过程中, 还会在Java代码里也要运行python命令,通过python解释器去翻译代码(这个是我的理解哈), 这地方是具体运行Java代码的时候,它找不到python解释器了。 所以会在运行的地方报这个错, 这个我们从开头指定了也白搭, 不是一个东西的。 所以这个问题的解决方法是,我们需要配置环境变量 Run -> 编辑配置,出现下面的窗口:

在这里插入图片描述
这样就大功告成了, 但这里依然是这里的逻辑比较重要, 因为保错可能不一样, 但是底层的逻辑都差不多的。

一天的时间摸索环境, 还好,发现了一些新的东西哈哈, 又对pycharm熟悉了一步, 之前, 用pycharm用的是不多的, 写的工程代码比较少,大部分停留在了读的地步。 这次通过探索,发现pycharm确实适合写工程代码, 比较重要的就是对于一个项目的相关配置了,什么python解释器,环境变量啥的。

有了这些探索,可以干的事情很多,比如我想从本地的pycharm用远程服务器上的anaconda环境在远程服务器上写工程代码,可以直接搞。 就是上面的第一步。

如果想用远程服务器上的pyspark集群环境, 就上面的两步都弄好也可以写, 美滋滋了哈哈。 😉