2016-09-14 20 views
7

Tôi đang cố gắng cài đặt hạt nhân Apache Toree cho khả năng tương thích tia lửa và tôi đang chạy vào một thông điệp môi trường lạ. Đây là quá trình tôi theo:Làm việc với Jupyter trên Windows và Apache Toree Kernel để tương thích với Spark

  1. Cài đặt cuối cùng Anaconda Version với Jupyter 4.1.0
  2. Run: pip cài đặt --pre toree
  3. Run: jupyter toree cài đặt --interpreters = PySpark, SparkR, Scala , SQL

Chỉ thực sự quan tâm đến hạt nhân Scala, nhưng tôi đã cài đặt tất cả phiên dịch. Hệ điều hành là các cửa sổ 7 và không có sự lựa chọn để sử dụng máy ảo hoặc Linux.

Đây là tập tin kernel.json mà tôi sửa đổi để sử dụng Cygwin để thực hiện run.sh kịch bản bash:

{ 
    "language": "scala", 
    "display_name": "Apache Toree - Scala", 
    "env": { 
    "__TOREE_SPARK_OPTS__": "", 
    "SPARK_HOME": "C:\\CDH\\spark", 
    "__TOREE_OPTS__": "", 
    "DEFAULT_INTERPRETER": "Scala", 
    "PYTHONPATH": "C:\\CDH\\spark\\python:C:\\CDH\\spark\\python\\lib\\py4j-0.8.2.1-src.zip", 
    "PYTHON_EXEC": "python" 
    }, 
    "argv": [ 
    "C:\\cygwin64\\bin\\mintty.exe","-h","always","/bin/bash","-l","-e","C:\\ProgramData\\jupyter\\kernels\\apache_toree_scala\\bin\\run.sh", 
    "--profile", 
    "{connection_file}" 
    ] 
} 

Khi runing jupyter, kernel dừng với lỗi:

TypeError: environment can only contain strings 

Các nhật ký mở rộng:

[E 10:45:56.736 NotebookApp] Failed to run command: 
    ['C:\\cygwin64\\bin\\mintty.exe', '-h', 'always', '/bin/bash', '-l', '-e', 'C:\\ProgramData\\jupyter\\kernels\\apache_toree_scala\\bin\\run.sh', ' 
--profile', 'C:\\Users\\luis\\AppData\\Roaming\\jupyter\\runtime\\kernel-e02cac9b-15de-4c69-a8e5-e5b11919e1bc.json'] 
    with kwargs: 
    {'stdin': -1, 'stdout': None, 'cwd': 'C:\\Users\\luis\\Documents', 'stderr': None, 'env': {'TMP': 'C:\\Users\\luis\\AppData\\Local\\Temp', 'COMPUTERNAME': 'laptop', 'USERDOMAIN': 'HOME', 'SPARK_HOME': u'C:\\CDH\\spark', 'DEFLOGDIR': 'C:\\ProgramData\\McAfee\\DesktopProtection', 'PSMODULEPATH': 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'PROCESSOR_IDENTIFIER':'Intel64 Family 6 Model 45 Stepping 7, GenuineIntel', u'DEFAULT_INTERPRETER': u'Scala', 'PROGRAMFILES': 'C:\\Program Files', 'PROCESSOR_REVISION': '2d07', 'SYSTEMROOT': 'C:\\Windows', 'PATH': 'C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Library\\bin;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Scripts;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Library\\bin;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Library\\bin;C:\\Program Files\\Java\\jdk1.7.0_76\\jre\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\sbt\\bin;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Scripts;C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\Library\\bin', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'WINDOWS_TRACING_FLAGS': '3', 'TK_LIBRARY': 'C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\tcl\\tk8.5', u'__TOREE_SPARK_OPTS__': u'', 'TEMP': 'C:\\Users\\luis\\AppData\\Local\\Temp', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'TIX_LIBRARY': 'C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\tcl\\tix8.4.3', 'ALLUSERSPROFILE': 'C:\\ProgramData', 'LOCALAPPDATA': 'C:\\Users\\luis\\AppData\\Local', 'HOMEPATH': '\\Users\\luis', 'JAVA_HOME': 'C:\\Program Files\\java\\jdk1.7.0_76', 'JPY_INTERRUPT_EVENT': '1056', 'PROGRAMW6432': 'C:\\Program Files', 'USERNAME': 'luis', 'LOGONSERVER': '\\\\S8KROGR2', 'SBT_HOME': 'C:\\Program Files (x86)\\sbt\\', 'JPY_PARENT_PID': '1036', 'PROGRAMDATA': 'C:\\ProgramData', u'PYTHONPATH': u'C:\\CDH\\spark\\python:C:\\CDH\\spark\\python\\lib\\py4j-0.8.2.1-src.zip', 'TCL_LIBRARY': 'C:\\Users\\luis\\AppData\\Local\\Continuum\\Anaconda2\\tcl\\tcl8.5', 'VSEDEFLOGDIR': 'C:\\ProgramData\\McAfee\\DesktopProtection', 'USERDNSDOMAIN': 'HOME.ES', 'SESSIONNAME': 'RDP-Tcp#0', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', u'PYTHON_EXEC': u'python', 'CLIENTNAME': 'laptop2', u'__TOREE_OPTS__': u'', 'FP_NO_HOST_CHECK': 'NO', 'WINDIR': 'C:\\Windows', 'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log', 'HOMEDRIVE': 'C:', 'SYSTEMDRIVE': 'C:', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'NUMBER_OF_PROCESSORS': '2', 'APPDATA': 'C:\\Users\\luis\\AppData\\Roaming', 'PROCESSOR_LEVEL': '6', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'OS': 'Windows_NT', 'PUBLIC': 'C:\\Users\\Public', 'IPY_INTERRUPT_EVENT': '1056', 'USERPROFILE': 'C:\\Users\\luis'}} 

[E 10:45:56.744 NotebookApp] Unhandled error in API request 
    Traceback (most recent call last): 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\notebook\base\handlers.py", line 457, in wrapper 
     result = yield gen.maybe_future(method(self, *args, **kwargs)) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1008, in run 
     value = future.result() 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\concurrent.py", line 232, in result 
     raise_exc_info(self._exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1014, in run 
     yielded = self.gen.throw(*exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\notebook\services\sessions\handlers.py", line 62, in post 
     kernel_id=kernel_id)) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1008, in run 
     value = future.result() 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\concurrent.py", line 232, in result 
     raise_exc_info(self._exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1014, in run 
     yielded = self.gen.throw(*exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 79, in create_session 
     kernel_name) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1008, in run 
     value = future.result() 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\concurrent.py", line 232, in result 
     raise_exc_info(self._exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1014, in run 
     yielded = self.gen.throw(*exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 92, in start_kernel_for_session 
     self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 1008, in run 
     value = future.result() 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\concurrent.py", line 232, in result 
     raise_exc_info(self._exc_info) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\tornado\gen.py", line 282, in wrapper 
     yielded = next(result) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 87, in start_kernel 
     super(MappingKernelManager, self).start_kernel(**kwargs) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\jupyter_client\multikernelmanager.py", line 110, in start_kernel 
     km.start_kernel(**kwargs) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\jupyter_client\manager.py", line 243, in start_kernel 
     **kw) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\jupyter_client\manager.py", line 189, in _launch_kernel 
     return launch_kernel(kernel_cmd, **kw) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\site-packages\jupyter_client\launcher.py", line 123, in launch_kernel 
     proc = Popen(cmd, **kwargs) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\subprocess.py", line 711, in __init__ 
     errread, errwrite) 
     File "C:\Users\luis\AppData\Local\Continuum\Anaconda2\lib\subprocess.py", line 959, in _execute_child 
     startupinfo) 
    TypeError: environment can only contain strings 
[E 10:45:56.766 NotebookApp] { 
     "Origin": "http://localhost:8888", 
     "Content-Length": "88", 
     "Accept-Language": "es-ES,es;q=0.8", 
     "Accept-Encoding": "gzip, deflate", 
     "Host": "localhost:8888", 
     "Accept": "application/json, text/javascript, */*; q=0.01", 
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36", 
     "Connection": "keep-alive", 
     "X-Requested-With": "XMLHttpRequest", 
     "Referer": "http://localhost:8888/notebooks/Untitled3.ipynb?kernel_name=apache_toree_scala", 
     "Content-Type": "application/json" 
    } 
[E 10:45:56.796 NotebookApp] 500 POST /api/sessions (::1) 626.00ms referer=http://localhost:8888/notebooks/Untitled3.ipynb?kernel_name=apache_toree_sc 
ala 

Tôi chạy lệnh bị cô lập:

C:\\cygwin64\\bin\\mintty.exe -h always /bin/bash -l -e C:\\ProgramData\\jupyter\\kernels\\apache_toree_scala\\bin\\run.sh 

Và nó hoạt động. Nó chỉ thất bại trong bối cảnh thực thi máy chủ jupyter.

Có ai thành công để chạy hạt nhân này trên máy tính Window không?

+0

Bất kỳ giải pháp nào để chạy hạt nhân Spark trên Windows? – user2418209

Trả lời

0

Tôi có cùng một vấn đề sử dụng: python trên chiến thắng 10, Anaconda, châm ngòi 2.0.2

Đây là workaround tôi đã đưa ra cho nó: sử dụng môi trường conda chuyển sang thiết lập các biến môi trường thay vì sử dụng jupyter để cài đặt chúng

  1. bản sao một môi trường riêng biệt conda (http://conda.pydata.org/docs/using/envs.html#create-an-environment)
  2. thiết lập các biến môi trường cần thiết cho toree (http://conda.pydata.org/docs/using/envs.html#windows)

sau đó chạy jupyter notebook <root dir of notebooks>

Bạn luân phiên có thể chỉ cần đặt các biến toree vĩnh viễn khỏi cửa sổ và làm rỗng "env" Từ điển từ kernel.json "env":{}

Tôi muốn giữ biến env của tôi tách khi sử dụng pyspark

0

Tôi đã tự viết hack.cmd của mình và quản lý để làm cho nó hoạt động bằng cách sử dụng Spark 2.2.0 và toree-assembly-0.2.0.dev1-incubating-SNAPSHOT. Tôi đã đăng giải pháp của mình lên số TOREE-399 ticket.

Run.cmd:

@echo off 

set PROG_HOME=%~dp0.. 

if not defined SPARK_HOME (
    echo SPARK_HOME must be set to the location of a Spark distribution! 
    exit 1 
) 

REM disable randomized hash for string in Python 3.3+ 
set PYTHONHASHSEED=0 

REM The SPARK_OPTS values during installation are stored in __TOREE_SPARK_OPTS__. This allows values to be specified during 
REM install, but also during runtime. The runtime options take precedence over the install options. 

if not defined SPARK_OPTS (
    set SPARK_OPTS=%__TOREE_SPARK_OPTS__% 
) else (
    if "%SPARK_OPTS%" == "" (
    set SPARK_OPTS=%__TOREE_SPARK_OPTS__% 
) 
) 

if not defined TOREE_OPTS (
    set TOREE_OPTS=%__TOREE_OPTS__% 
) else (
    if "%TOREE_OPTS%" == "" (
    set TOREE_OPTS=%__TOREE_OPTS__% 
) 
) 

echo Starting Spark Kernel with SPARK_HOME=%SPARK_HOME% 

REM This doesn't work because the classpath doesn't get set properly, unless you hardcode it in SPARK_SUBMIT_OPTS using forward slashes or double backslashes, but then you can't use the SPARK_HOME and PROG_HOME variables. 
REM set SPARK_SUBMIT_OPTS=-cp "%SPARK_HOME%\conf\;%SPARK_HOME%\jars\*;%PROG_HOME%\lib\toree-assembly-0.2.0.dev1-incubating-SNAPSHOT.jar" -Dscala.usejavacp=true 
REM set TOREE_COMMAND="%SPARK_HOME%\bin\spark-submit.cmd" %SPARK_OPTS% --class org.apache.toree.Main %PROG_HOME%\lib\toree-assembly-0.2.0.dev1-incubating-SNAPSHOT.jar %TOREE_OPTS% %* 

REM The two important things that we must do differently on Windows are that we must add toree-assembly-0.2.0.dev1-incubating-SNAPSHOT.jar to the classpath, and we must define the java property scala.usejavacp=true. 
set TOREE_COMMAND=%JAVA_HOME%\bin\java -cp "%SPARK_HOME%\conf\;%SPARK_HOME%\jars\*;%PROG_HOME%\lib\toree-assembly-0.2.0.dev1-incubating-SNAPSHOT.jar" -Dscala.usejavacp=true -Xmx1g org.apache.spark.deploy.SparkSubmit %SPARK_OPTS% --class org.apache.toree.Main %PROG_HOME%\lib\toree-assembly-0.2.0.dev1-incubating-SNAPSHOT.jar %TOREE_OPTS% %* 

echo. 
echo %TOREE_COMMAND% 
echo. 

%TOREE_COMMAND% 
  • Việc chạy.Tệp cmd phải được đặt trong C: \ ProgramData \ jupyter \ kernels \ apache_toree_scala \ bin \
  • Ngoài ra, bạn cần chỉnh sửa kernel.json trong thư mục ở trên để thay đổi run.sh thành run.cmd.
  • Nếu bạn muốn cho phép cài đặt thêm Nhân hạt nhân, bạn cũng nên chỉnh sửa toreeapp.py để thay đổi run.sh thành run.cmd.
  • Tôi chưa kiểm tra xem các câu lệnh IF có hoạt động chính xác hay không. Tôi nghi ngờ họ sẽ sặc trên một số thông số kể từ khi lô thiếu một tuyên bố IF mạnh mẽ.
Các vấn đề liên quan