sparkdl && tensorframes python 版 安裝 mac

image.png

在我們 使用tensorflow 和 spark 結(jié)合的時候 扭仁,肯定非常激動,關(guān)鍵 我們打算 使用哪一種語言 建構(gòu)我們的機器學(xué)習(xí)代碼,最主要的的有四種 ,python java scala R,當然 python 是門檻較低的缸沃。使用java scala 一般人不一定能hold 的住,所以我們首先 講 python版的工具鏈

首先 假設(shè)你已經(jīng)有了一臺 mac pro
安裝了 python 3.5 或者3.6
jdk 8 县恕,最好不要用jdk9 美尸,jdk9 有很多問題
本地 安裝 了 tensorflow 和pyspark
當然 本地 homebrew 安裝 spark 2.1 和hadoop 2.8.1

想要 spark 和tensorflow 串聯(lián)在一起胯陋,你需要 spark-deeplearning 這個神器

我們git 一下 威廉大哥的 ,因為 威廉大哥擴展了 原來 的databircks 凉翻,添加了新功能的铺罢,一定要用威廉大哥的,否則 威廉大哥用的一些 方法 你找不到的泉瞻,比如
from sparkdl import TextEstimator
from sparkdl.transformers.easy_feature import EasyFeature

這些都是威廉自己擴展的鞭达,非常好用

https://github.com/allwefantasy/spark-deep-learning
mkdir sparkdl && cd sparkdl 
git clone https://github.com/allwefantasy/spark-deep-learning.git  . # 注意 點號
git checkout release 

當然 單單它還不夠繁扎,我們還需要 tensorflow 與spark 底層元素交互的 媒介
tensorframe,并且 spark-DeepLearning 本身依賴 tensorframes

https://github.com/databricks/tensorframes/
git clone https://github.com/databricks/tensorframes.git

本身 如果你想直接使用pip 來安裝這兩個包 右犹,抱歉 pip倉庫沒有。
這里就涉及到了 pip 安裝 本地 package

其實 也沒有多難偿荷,幸好威廉大哥給了我一些錦囊妙計

想pip 安裝本地的package 寺庄,大致分兩步,
1.創(chuàng)建 一個啟動文件 setup.py, setup 文件可以參考威廉大哥的

[https://github.com/allwefantasy/spark-deep-learning/blob/release/python/setup.py](https://github.com/allwefantasy/spark-deep-learning/blob/release/python/setup.py)

2.在 setup.py文件中 配置package的屬性 文件路徑 等信息

  1. 執(zhí)行 一系列命令 最重要的是 執(zhí)行
python setup.py  bdist_wheel 

這樣就會生成 二進制文件 package Name-Version-py3.whl
4.然后 進入這個文件目錄 在Terminal 中執(zhí)行

pip  install   package-Name-Version-py3.whl   #   [anaconda]

pip3 install package-Name-Version-py3.whl   # [python 3.6]
  1. pip list 和 pip3 list 驗證 是否安裝成功
  2. import package 查看模塊是否真實可以使用
    這里面要注意的就是 在執(zhí)行 2的時候 要確定在同目錄下必須有package對應(yīng)的python源文件,否則即使生成了 whl文件筹麸,這個包也是一個假的不可以被使用的

另外 編寫 setup.py文件 要注意的就是包名和版本要 與實際一致物赶,否則可能真包安裝了仰楚,本身依賴的其他包也找不到它

sparkdl 的 setup.py

import codecs
import os

from setuptools import setup, find_packages

# See this web page for explanations:
# https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/
PACKAGES = ["sparkdl"]
KEYWORDS = ["spark", "deep learning", "distributed computing", "machine learning"]
CLASSIFIERS = [
    "Programming Language :: Python :: 2.7",
    "Programming Language :: Python :: 3.4",
    "Programming Language :: Python :: 3.5",
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Natural Language :: English",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Topic :: Scientific/Engineering",
]
# Project root
ROOT = os.path.abspath(os.path.dirname(__file__))

#
#
# def read(*parts):
#     """
#     Build an absolute path from *parts* and and return the contents of the
#     resulting file.  Assume UTF-8 encoding.
#     """
#     with codecs.open(os.path.join(ROOT, *parts), "rb", "utf-8") as f:
#         return f.read()

#
# def configuration(parent_package='', top_path=None):
#     if os.path.exists('MANIFEST'):
#         os.remove('MANIFEST')
#
#     from numpy.distutils.misc_util import Configuration
#     config = Configuration(None, parent_package, top_path)
#
#     # Avoid non-useful msg:
#     # "Ignoring attempt to set 'name' (from ... "
#     config.set_options(ignore_setup_xxx_py=True,
#                        assume_default_configuration=True,
#                        delegate_options_to_subpackages=True,
#                        quiet=True)
#
#     config.add_subpackage('sparkdl')
#
#     return config


setup(
    name="sparkdl",
    description="Integration tools for running deep learning on Spark",
    license="Apache 2.0",
    url="https://github.com/allwefantasy/spark-deep-learning",
    version="0.2.2",
    author="Joseph Bradley",
    author_email="joseph@databricks.com",
    maintainer="Tim Hunter",
    maintainer_email="timhunter@databricks.com",
    keywords=KEYWORDS,
    packages=find_packages(),
    classifiers=CLASSIFIERS,
    zip_safe=False,
    include_package_data=True
)

tensorframes 的 setup.py

import codecs
import os

from setuptools import setup, find_packages

# See this web page for explanations:
# https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/
PACKAGES = ["tensorframes"]
KEYWORDS = ["spark", "deep learning", "distributed computing", "machine learning"]
CLASSIFIERS = [
    "Programming Language :: Python :: 2.7",
    "Programming Language :: Python :: 3.4",
    "Programming Language :: Python :: 3.5",
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Natural Language :: English",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Topic :: Scientific/Engineering",
]
# Project root
ROOT = os.path.abspath(os.path.dirname(__file__))

#
#
# def read(*parts):
#     """
#     Build an absolute path from *parts* and and return the contents of the
#     resulting file.  Assume UTF-8 encoding.
#     """
#     with codecs.open(os.path.join(ROOT, *parts), "rb", "utf-8") as f:
#         return f.read()

#
# def configuration(parent_package='', top_path=None):
#     if os.path.exists('MANIFEST'):
#         os.remove('MANIFEST')
#
#     from numpy.distutils.misc_util import Configuration
#     config = Configuration(None, parent_package, top_path)
#
#     # Avoid non-useful msg:
#     # "Ignoring attempt to set 'name' (from ... "
#     config.set_options(ignore_setup_xxx_py=True,
#                        assume_default_configuration=True,
#                        delegate_options_to_subpackages=True,
#                        quiet=True)
#
#     config.add_subpackage('sparkdl')
#
#     return config


setup(
    name="tensorframes",
    description="Integration tools for running deep learning on Spark",
    license="Apache 2.0",
    url="https://github.com/databricks/tensorframes",
    version="0.2.9",
    author="Joseph Bradley",
    author_email="joseph@databricks.com",
    maintainer="Tim Hunter",
    maintainer_email="timhunter@databricks.com",
    keywords=KEYWORDS,
    packages=find_packages(),
    classifiers=CLASSIFIERS,
    zip_safe=False,
    include_package_data=True
)

然后 先 安裝 sparkdl 哄孤,進入 spark-deeplearning 目錄 打開Terminal

cd ./python && python setup.py bdist_wheel && cd dist 
pip install  sparkdl-0.2.2-py3-none-any.whl
pip3 install  sparkdl-0.2.2-py3-none-any.whl

在安裝tensorframes 要注意的就是 tensorframes的根目錄下的python目錄沒有對應(yīng)的源文件冬念,需要找到源文件 復(fù)制到這里刨摩,一定要把 ./src/main/python/ 下的兩個文件目錄 tensorframes 和tensorframes_snippets 拷貝到 根目錄下的python目錄下,否則即使 安裝了tensorframes 也是不可以用的世吨,另外一定要 提前把pyspark 安裝好澡刹,否則 也是不可以用的

cp  ./src/main/python/*  ./python
cd ./python && python setup.py bdist_wheel && cd dist 
pip install tensorframes-0.2.9-py3-none-any.whl 
pip3 install tensorframes-0.2.9-py3-none-any.whl 

命令可以參考 威廉大哥的

cd ./python && python [setup.py](setup.py) bdist_wheel && cd dist && pip uninstall sparkdl && pip install ./sparkdl-0.2.2-py2-none-any.whl && cd ..

image.png
image.png

然后我們在pycharm里就可以愉快的使用了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耘婚,隨后出現(xiàn)的幾起案子像屋,更是在濱河造成了極大的恐慌,老刑警劉巖边篮,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件己莺,死亡現(xiàn)場離奇詭異,居然都是意外死亡戈轿,警方通過查閱死者的電腦和手機凌受,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來思杯,“玉大人胜蛉,你說我怎么就攤上這事挠进。” “怎么了誊册?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵领突,是天一觀的道長。 經(jīng)常有香客問我案怯,道長君旦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任嘲碱,我火速辦了婚禮金砍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘麦锯。我一直安慰自己恕稠,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布扶欣。 她就那樣靜靜地躺著鹅巍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪料祠。 梳的紋絲不亂的頭發(fā)上昆著,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音术陶,去河邊找鬼凑懂。 笑死,一個胖子當著我的面吹牛梧宫,可吹牛的內(nèi)容都是我干的接谨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼塘匣,長吁一口氣:“原來是場噩夢啊……” “哼脓豪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忌卤,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤扫夜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驰徊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笤闯,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年棍厂,在試婚紗的時候發(fā)現(xiàn)自己被綠了颗味。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡牺弹,死狀恐怖浦马,靈堂內(nèi)的尸體忽然破棺而出时呀,到底是詐尸還是另有隱情,我是刑警寧澤晶默,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布谨娜,位于F島的核電站,受9級特大地震影響磺陡,放射性物質(zhì)發(fā)生泄漏趴梢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一仅政、第九天 我趴在偏房一處隱蔽的房頂上張望垢油。 院中可真熱鬧盆驹,春花似錦圆丹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至廉丽,卻和暖如春倦微,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背正压。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工欣福, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焦履。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓拓劝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘉裤。 傳聞我的和親對象是個殘疾皇子郑临,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)址 下載與安裝 你可以使用我們提供的 Pip, Docker, Virtualenv, Anaconda 或 源...
    九七學(xué)姐閱讀 4,740評論 3 11
  • 1. 介紹 首先讓我們來看看TensorFlow! 但是在我們開始之前屑宠,我們先來看看Python API中的Ten...
    JasonJe閱讀 11,725評論 1 32
  • Tensorflow安裝手冊 tony:~ xdwang$ sudo easy_install pip Pass...
    sennchi閱讀 1,564評論 0 1
  • linux和windows下安裝python拓展包-pycharm厢洞、numpy、scipy典奉、matplotlib躺翻、...
    hzyido閱讀 81,231評論 2 10
  • 一通電話获枝,兩個世界。骇笔。省店。 是我真的不該擁有幸福嗎嚣崭??還是我不值得擁有幸福懦傍。雹舀。究竟發(fā)生了什么?為什么一個晚上粗俱,所有的...
    傻饅閱讀 309評論 0 0