2017-09-13 18 views
0

カスタムスキーマを使用してPySparkを使用して寄木細工ファイルのグループを読み込もうとしていますが、 'StructField' _get_object_id 'エラーです。ここでAttributeError: 'StructField'オブジェクトに属性 '_get_object_id'がありません:カスタムスキーマを使用して寄木細工ファイルをロードする

は私のサンプルコードです:

import pyspark 
from pyspark.sql import SQLContext, SparkSession 
from pyspark.sql import Row 
import pyspark.sql.functions as func 
from pyspark.sql.types import * 

sc = pyspark.SparkContext() 
spark = SparkSession(sc) 
sqlContext = SQLContext(sc) 

l = [('1',31200,'Execute',140,'ABC'),('2',31201,'Execute',140,'ABC'),('3',31202,'Execute',142,'ABC'), 
    ('4',31103,'Execute',149,'DEF'),('5',31204,'Execute',145,'DEF'),('6',31205,'Execute',149,'DEF')] 
rdd = sc.parallelize(l) 
trades = rdd.map(lambda x: Row(global_order_id=int(x[0]), nanos=int(x[1]),message_type=x[2], price=int(x[3]),symbol=x[4])) 
trades_df = sqlContext.createDataFrame(trades) 
trades_df.printSchema() 
trades_df.write.parquet('trades_parquet') 

trades_df_Parquet = sqlContext.read.parquet('trades_parquet') 
trades_df_Parquet.printSchema() 

# The schema is encoded in a string. 
schemaString = "global_order_id message_type nanos price symbol" 

fields = [StructField(field_name, StringType(), True) for field_name in schemaString.split()] 
schema = StructType(fields) 

trades_df_Parquet_n = spark.read.format('parquet').load('trades_parquet',schema,inferSchema =False) 
#trades_df_Parquet_n = spark.read.parquet('trades_parquet',schema) 
trades_df_Parquet_n.printSchema() 

いずれかは、あなたの提案で私を助けてください。

Signature: trades_df_Parquet_n.load(path=None, format=None, schema=None, **options) 

あなたが得る:

答えて

0

ので、それはそれはformatではありません知っているオプションschemaの名前を指定し

trades_df_Parquet_n = spark.read.format('parquet').load('trades_parquet',schema=schema, inferSchema=False) 
+0

はMarie..Itが働いていただきありがとうございます。.. – Srikant

関連する問題