【问题标题】:AttributeError: 'StructField' object has no attribute '_get_object_id': with loading parquet file with custom schemaAttributeError:“StructField”对象没有属性“_get_object_id”:使用自定义模式加载镶木地板文件
【发布时间】:2017-09-13 21:04:08
【问题描述】:

我正在尝试使用 PySpark 使用自定义架构读取镶木地板文件组,但它给出 AttributeError: 'StructField' object has no attribute '_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()

谁能帮我提一下你的建议。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql pyspark-sql


    【解决方案1】:

    指定选项名称schema,这样它就知道不是@​​987654322@:

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

    你得到:

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

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多