python中安裝flink


 
        

(一)

安裝准備:
[root@master flink-dist]# mvn --version
Apache Maven 3.2.5 
[root@master flink-dist]# scala -version
Scala code runner version 2.12.6 --
[root@master flink-dist]# python -V
Python 2.7.5
[root@master git]# /usr/local/git/bin/git version
git version 2.8.4
[root@master git]# pip -V
pip 19.3.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)

(二)下載源代碼

cd /usr/local/git/bin/git
//下載源代碼
/usr/local/git/bin/git clone https://github.com/apache/flink.git

備注:下載后項目源代碼就在 git 命令 當前目錄之下(目錄名稱 flink)。


// 拉取1.9分支
cd flink; git fetch origin release-1.9
git checkout -b release-1.9 origin/release-1.9
//構建二進制發布包
mvn clean install -DskipTests -Dfas

坑1:編譯過程中 會有 三個 jar 包找不到, flink-examples 和 一個 oss 的 相關。 在 pom.xml 暫時注釋掉。

坑2:編譯時候 出現以下錯誤 可以 在子項目下 執行編譯命令,然后再編譯總項目 ,可能會有多個子項目需要分別去手工編譯
本例的 分項目是指 /usr/local/git/bin/flink/flink-libraries/flink-cep

cd /usr/local/git/bin/flink/flink-libraries/flink-cep
mvn clean install -DskipTests -Dfas

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.0.0:single (opt) on project flink-dist_2.11: 
Failed to create assembly: Error adding file to archive: /usr/local/git/bin/flink/flink-dist/../flink-libraries/flink-cep/target/flink-cep_2.11-1.9-SNAPSHOT.jar -> [Help 1]

重復以上過程直到編譯成功完畢。

 


(三)編譯完成后,需要在相應目錄下找到發布包:

 
cd flink-dist/target/flink-1.9.0-bin/flink-1.9.0
tar -zcvf flink-1.9.0.tar.gz flink-1.9.0

注意 實際環境 是 /usr/local/git/bin/flink/flink-dist/target/flink-1.9-SNAPSHOT-bin
另外 相應打包的時候 也不是
flink-1.9.0.tar.gz 打出來的包是flink-1.9-SNAPSHOT.tar.gz


所以 實際運行的命令 是

cd
/usr/local/git/bin/flink/flink-dist/target/flink-1.9-SNAPSHOT-bin

tar -zcvf flink-1.9-SNAPSHOT.tar.gz flink-1.9-SNAPSHOT

幾個目錄的關系:
1、/usr/local/git 這個是 git的 安裝目錄
2、/usr/local/git/bin/ 這個是git 安裝之后 執行git命令的地方(由於 機器上可能存在多個 git 版本,為了保證 命令唯一性,在這個目錄下 ./git 執行 XXX)
3、
/usr/local/git/bin/flink 這個 flink 目錄是 通過github clone 下載下來的 flink的源代碼目錄。
4、
flink 源代碼 下有很多目錄 ,flink-dist 基本 是編譯源代碼后生成文件的地方。


(四)以下把 flink 整合成python能識別的包
cd flink-python;Python setup.py sdist
這個flink-Python 目錄是指 /usr/local/git/bin/flink/flink-python

結果:在/usr/local/git/bin/flink/flink-python/dist 目錄下 會生成 apache-flink-1.9.dev0.tar.gz 這個 tar包


(五)以下,把上一步驟生成的 python 能識別的 flink tar包(apache-flink-1.9.dev0.tar.gz) 作為插件安裝到 python 環境中。

cd
/usr/local/git/bin/flink/flink-python/dist
pip install dist/*.tar.gz
pip list|grep flink

備注:實際執行安裝命令 pip install dist/*.tar.gz 的時候會報錯 。原因是在這個 apache-flink-1.9.dev0.tar.gz 中的 有一個setup.py 安裝文件,這個文件是在pycharm的ide工具下編寫而成 其中
用到了pycharm 才有的參數 __file__
代碼如下 this_directory = os.path.abspath(os.path.dirname(__file__))
而在終端下 執行pip
__file__ 所表現出來的 實際目錄值(經過 print 打印 測試 結果是 /tmp/pipreqXXX) 和 並不是 【/usr/local/git/bin/flink/flink-python】,
這會導致后面一系列 安裝目錄的錯位,導致安裝失敗。

解決辦法:不要直接安裝tar包,先把
/usr/local/git/bin/flink/flink-python/dist/apache-flink-1.9.dev0.tar.gz 解壓生成目錄 apache-flink-1.9.dev0

然后
cd /usr/local/git/bin/flink/flink-python
注意一定要 cd 到這個目錄(因為 下面的setup.py中包含相對於flink-python這個目錄的有很多相對目錄)
執行 python dist/apache-flink-1.9.dev0/setup.py install

也就是 直接調用 解壓縮目錄中的setup.py。機制上 類似於 pip,但是避免了 pip的相對目錄問題

完畢之后 會看到

...................................................
..................................................

Installed /usr/lib/python2.7/site-packages/py4j-0.10.8.1-py2.7.egg
Searching for python-dateutil==1.5
Best match: python-dateutil 1.5
Adding python-dateutil 1.5 to easy-install.pth file

Using /usr/lib/python2.7/site-packages
Finished processing dependencies for apache-flink==1.9.dev0

查看python中flink的安裝結果:

pip list|grep flink

結果:

[hadoop@master flink-python]$ pip list|grep flink
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
apache-flink 1.9.dev0

 

至此python flink 包 安裝完畢!

 


 (六)測試 python flink 包 效果

git clone https://github.com/sunjincheng121/enjoyment.code.git
cd /usr/local/git/bin/enjoyment.code/myPyFlink/enjoyment; python word_count.py

結果會生成一個sink.csv 文件 如下:

[root@master enjoyment]# ls
__init__.py kafka sink.csv source.csv udc udf word_count_cli.py word_count.py word_count_shell.py word_count_udf.py
[root@master enjoyment]# pwd
/usr/local/git/bin/enjoyment.code/myPyFlink/enjoyment
[root@master enjoyment]# ll
total 24
-rw-r--r--. 1 root root 0 Jan 2 21:48 __init__.py
drwxr-xr-x. 2 root root 69 Jan 2 21:48 kafka
-rw-r--r--. 1 root root 34 Jan 3 08:09 sink.csv
-rw-r--r--. 1 root root 40 Jan 2 21:48 source.csv
drwxr-xr-x. 2 root root 55 Jan 2 21:48 udc
drwxr-xr-x. 2 root root 43 Jan 2 21:48 udf
-rw-r--r--. 1 root root 2276 Jan 2 21:48 word_count_cli.py


 
        
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM