cuốn sách gpt4 ai đã làm

python - Đánh giá PySpark

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 20:53:14 30 4
mua khóa gpt4 Nike

Tôi đang thử đoạn mã sau để thêm một số vào mỗi hàng trong RDD và trả về danh sách RDD bằng PySpark.

từ pyspark.context nhập SparkContext
file = "file:///home/sree/code/scrap/sample.txt"
sc = SparkContext('local', 'TestApp')
dữ liệu = sc.textFile(file)
chia tách = [data.map(lambda p : int(p) + i) for i in range(4)]
in tách [0].collect()
in tách [1].collect()
in tách [2].collect()

Nội dung của tệp đầu vào (sample.txt) là:

1
2
3

Tôi đang mong đợi kết quả đầu ra như thế này (thêm các số trong rdd lần lượt là 0, 1, 2):

[1,2,3]
[2,3,4]
[3,4,5]

Và sản lượng thực tế là:

[4, 5, 6]
[4, 5, 6]
[4, 5, 6]

Điều này có nghĩa là đạo hàm chỉ sử dụng giá trị 3 của biến i, bất kểPhạm vi(4).

Tại sao hành vi này xảy ra?

câu trả lời hay nhất

Điều này xảy ra do liên kết muộn của Python, không phải do (Py)Spark cụ thể. Tôilambda p : int(p) + isẽ được tra cứu khi nó được sử dụng chứ không phải khi nó được xác định. Thông thường, điều này có nghĩa là khi nó được gọi, nhưng trong bối cảnh cụ thể này, đó là khi nó được tuần tự hóa để gửi cho nhân viên.

Ví dụ: bạn có thể làm điều này:

định nghĩa f(i):
định nghĩa _f(x):
thử:
trả về int(x) + i
ngoại trừ:
vượt qua
trả lại _f

data = sc.parallelize(["1", "2", "3"])
chia tách = [data.map(f(i)) cho i trong phạm vi (4)]
[rdd.collect() cho rdd theo phần tách]
## [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]

Về đánh giá python - PySpark, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/56177156/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress