Tôi có tệp ở định dạng hdfs được phân phối trên các nút trong cụm.Lấy mẫu một tập dữ liệu phân tán lớn bằng pyspark/spark
Tôi đang cố lấy mẫu ngẫu nhiên gồm 10 dòng từ tệp này.
trong vỏ pyspark, tôi đọc các tập tin vào một RDD sử dụng:
>>> textFile = sc.textFile("/user/data/myfiles/*")
và sau đó tôi muốn chỉ đơn giản là lấy một mẫu ... điều thú vị về Spark là có lệnh như takeSample
, tiếc là tôi nghĩ tôi đang làm một cái gì đó sai vì sau mất một thời gian rất dài:
>>> textFile.takeSample(False, 10, 12345)
vì vậy tôi cố gắng tạo ra một phân vùng trên mỗi nút, và sau đó hướng dẫn mỗi nút để lấy mẫu phân vùng đó bằng cách sử dụng lệnh sau:
>>> textFile.partitionBy(4).mapPartitions(lambda blockOfLines: blockOfLines.takeSample(False, 10, 1234)).first()
nhưng điều này mang lại một lỗi ValueError: too many values to unpack
:
org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/spark/python/pyspark/worker.py", line 77, in main
serializer.dump_stream(func(split_index, iterator), outfile)
File "/opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/spark/python/pyspark/serializers.py", line 117, in dump_stream
for obj in iterator:
File "/opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/spark/python/pyspark/rdd.py", line 821, in add_shuffle_key
for (k, v) in iterator:
ValueError: too many values to unpack
Làm thế nào tôi có thể lấy mẫu 10 dòng từ một dữ liệu phân phối lớn thiết lập sử dụng tia lửa hoặc pyspark?
Tôi không nghĩ rằng đây là vấn đề với tia lửa, hãy xem http://stackoverflow.com/questions/7053551/python-valueerror-too-many-values-to-unpack – aaronman
@aaronman bạn chính xác trong có nghĩa là lỗi "quá nhiều giá trị" chắc chắn là lỗi python. Tôi sẽ thêm nhiều chi tiết hơn về thông báo lỗi. Linh cảm của tôi là có điều gì đó sai với mã pyspark của tôi mặc dù - bạn có thể chạy mã này thành công trên thiết lập tia lửa của bạn? – mgoldwasser
Tôi chỉ thực sự sử dụng API scala spark, tôi nghĩ rằng phong cách chức năng của scala phù hợp thực sự tốt với Mapreduce nói chung – aaronman