2017-10-13 37 views
0

PySparkを使用するのに苦労しています。 私はcsvファイルを読み込もうとしていて、今のところワンホットエンコーディングを行っています。PySparkファイル操作とデータ操作のエラー

2ページにわたるエラーが発生します。

私のサンプルコードを以下に示す

from pyspark.sql import SQLContext 
from pyspark.sql.types import * 
from pyspark import SparkContext 
from pyspark.ml.feature import OneHotEncoder, StringIndexer 

sqlContext = SQLContext(sc) 
shirtsize = sc.textFile("shirt_sizes.*") 
shirt_header = shirtsize.first() 
fields = [StructField(field_name, StringType(),True) for field_name in shirt_header.split(',')] 

fields[0].dataType = IntegerType() 
schema = StructType(fields) 
shirtDF = spark.createDataFrame(shirtsize,schema) 
SI = StringIndexer(inputCol="ethcty",outputCol="ET_out") 
model = SI.fit(shirtDF) 

エラーが長すぎるが、これが始まりです:

17/10/13 15:22:38 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 0.0 in stage 
1.0 (TID 1, cluster-a2db-m.c.internal, executor 1): org.apache.spark.api 
.python.PythonException: Traceback (most recent call last): 
    File "/usr/lib/spark/python/pyspark/worker.py", line 177, in main 
    process() 
    File "/usr/lib/spark/python/pyspark/worker.py", line 172, in process 
    serializer.dump_stream(func(split_index, iterator), outfile) 
    File "/usr/lib/spark/python/pyspark/serializers.py", line 268, in dump_stream 
    vs = list(itertools.islice(iterator, batch)) 
    File "/usr/lib/spark/python/pyspark/sql/session.py", line 520, in prepare 
    verify_func(obj, schema) 
    File "/usr/lib/spark/python/pyspark/sql/types.py", line 1366, in _verify_type 
    raise TypeError("StructType can not accept object %r in type %s" % (obj, type(obj))) 
TypeError: StructType can not accept object u'columnA,columnB,columnC,columnD....' in type <type 'unicode'> 

私は

をデバッグすることはできませんよ、いくつかのタイプのエラーがあります

答えて

0

csvリーダーを使用してください:

spark.read.schema(schema).format("csv").load(path)\ 

それ以外の場合は、すべての行を最初に解析する必要があります(分割してRows/tuplesを作成し、値を予想される型にキャストします)。