2016-03-30 33 views
6

Tôi đang sử dụng Spark 1.6.0 trên ba máy ảo, 1x Master (độc lập), 2x công nhân w/8G RAM, 2CPU mỗi máy.Jupyter & PySpark: Cách chạy nhiều sổ ghi chép

Tôi đang sử dụng cấu hình hạt nhân dưới đây:

{ 
"display_name": "PySpark ", 
"language": "python3", 
"argv": [ 
    "/usr/bin/python3", 
    "-m", 
    "IPython.kernel", 
    "-f", 
    "{connection_file}" 
], 
"env": { 
    "SPARK_HOME": "<mypath>/spark-1.6.0", 
    "PYTHONSTARTUP": "<mypath>/spark-1.6.0/python/pyspark/shell.py", 
    "PYSPARK_SUBMIT_ARGS": "--master spark://<mymaster>:7077 --conf spark.executor.memory=2G pyspark-shell --driver-class-path /opt/vertica/java/lib/vertica-jdbc.jar" 
} 
} 

Hiện nay, công trình này. Tôi có thể sử dụng ngữ cảnh tia lửa sc & sqlContext mà không cần nhập, như trong vỏ pyspark.

Sự cố xảy ra khi tôi sử dụng nhiều sổ ghi chép: Trên thiết bị phát tia lửa, tôi thấy hai ứng dụng 'pyspark-shell', điều này có ý nghĩa nhưng chỉ có thể chạy một lần. Nhưng ở đây, 'chạy' không có nghĩa là thực hiện bất cứ điều gì, ngay cả khi tôi không chạy bất cứ thứ gì trên sổ ghi chép, điều này sẽ được hiển thị là 'đang chạy'. Với điều này, tôi không thể chia sẻ tài nguyên giữa các sổ ghi chép, điều này khá buồn (hiện tại tôi phải giết shell đầu tiên (= hạt nhân notebook) để chạy phần thứ hai).

Nếu bạn có bất kỳ ý tưởng nào về cách thực hiện, hãy cho tôi biết! Ngoài ra, tôi không chắc chắn nếu cách tôi đang làm việc với hạt nhân là 'thực hành tốt nhất', tôi đã có rắc rối chỉ cần thiết lập tia lửa & jupyter để làm việc cùng nhau.

Thx tất cả

+0

@AlbertoBonsanto làm thế nào mà sẽ giải quyết vấn đề đồng thời? :) – eliasah

+0

@eliasah điều này sẽ không chắc chắn. Vẫn còn tuyệt vời để có được một số lời khuyên: p – pltrdy

+1

Bạn đang tìm cách chia sẻ sparkcontext? – eliasah

Trả lời

0

Vấn đề là cơ sở dữ liệu được Spark lưu trữ di chuyển (Derby). Derby là một hệ thống cơ sở dữ liệu trọng lượng nhẹ và chỉ có thể chạy một cá thể Spark tại một thời điểm. Giải pháp là thiết lập một hệ thống cơ sở dữ liệu khác để xử lý nhiều trường hợp (postgres, mysql ...).

Ví dụ: bạn có thể sử dụng DB bưu điện.

  • Thêm postgres jar trong tia lửa/lọ
  • Thêm một tập tin cấu hình (hive-site.xml) trong spark conf
  • Cài đặt trên máy postgres
  • của bạn Thêm một người dùng, mật khẩu và db cho spark/tổ ong trong postgres (phụ thuộc vào giá trị của bạn trong hive-site.xml)

Ví dụ trên vỏ linux:

# download postgres jar 
wget https://jdbc.postgresql.org/download/postgresql-42.1.4.jar 

# install postgres on your machine 
pip install postgres 

# add user, pass and db to postgres 
psql -d postgres -c "create user hive" 
psql -d postgres -c "alter user hive with password 'pass'" 
psql -d postgres -c "create database hive_metastore" 
psql -d postgres -c "grant all privileges on database hive_metastore to hive" 

hive-site.xml:

<configuration> 

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:postgresql://localhost:5432/hive_metastore</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.postgresql.Driver</value> 
</property> 

<property> 
<name>javax.jdo.option.ConnectionUserName</name> 
    <value>hive</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>pass</value> 
</property> 

</configuration> 
Các vấn đề liên quan