use*_*398 7 apache-spark apache-spark-sql pyspark
我正在尝试使用带有自定义架构的镶木地板格式导入数据,但它返回:TypeError:option() 缺少 1 个必需的位置参数:“值”
ProductCustomSchema = StructType([
StructField("id_sku", IntegerType(), True),
StructField("flag_piece", StringType(), True),
StructField("flag_weight", StringType(), True),
StructField("ds_sku", StringType(), True),
StructField("qty_pack", FloatType(), True)])
def read_parquet_(path, schema) :
return spark.read.format("parquet")\
.option(schema)\
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss")\
.load(path)
product_nomenclature = 'C:/Users/alexa/Downloads/product_nomenc'
product_nom = read_parquet_(product_nomenclature, ProductCustomSchema)
Run Code Online (Sandbox Code Playgroud)
如评论中所述,您应该更改.option(schema)为.schema(schema). option()要求您指定 a key(您正在设置的选项的名称)和 a value(您要分配给该选项的值)。您之所以得到 ,是TypeError因为您只是传递了一个被调用的变量schema,option而没有指定您实际尝试使用该变量设置的选项。
在QueryExecutionException您的评论贴被提出,因为你已经在你定义的模式schema变量在你的数据帧不匹配的数据。如果您要指定自定义架构,则必须确保该架构与您正在读取的数据相匹配。在您的示例中,该列id_sku存储为BinaryType,但在您的架构中,您将该列定义为IntegerType. pyspark不会尝试协调您提供的架构与数据中的实际类型之间的差异,并且将引发异常。
要修复您的错误,请确保您定义的架构正确地表示您的数据,因为它存储在镶木地板文件中(id_sku即将架构中的数据类型更改为BinaryType)。这样做的好处是您不必在每次读取镶木地板文件时都推断文件架构,从而获得轻微的性能提升。
| 归档时间: |
|
| 查看次数: |
19251 次 |
| 最近记录: |