当前位置: 首页 > 知识库问答 >
问题:

无法推断拼花地板的架构。必须手动指定

甘英光
2023-03-14

我正在运行EMR笔记本中的所有代码。

火花版本

'3.0.1-amzn-0'

temp_df.print模式

root
 |-- dt: string (nullable = true)
 |-- AverageTemperature: double (nullable = true)
 |-- AverageTemperatureUncertainty: double (nullable = true)
 |-- State: string (nullable = true)
 |-- Country: string (nullable = true)
 |-- year: integer (nullable = true)
 |-- month: integer (nullable = true)
 |-- day: integer (nullable = true)
 |-- weekday: integer (nullable = true)

温度df。显示(2)

+----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+
|        dt|AverageTemperature|AverageTemperatureUncertainty|State|Country|year|month|day|weekday|
+----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+
|1855-05-01|            25.544|                        1.171| Acre| Brazil|1855|    5|  1|      3|
|1855-06-01|            24.228|                        1.103| Acre| Brazil|1855|    6|  1|      6|
+----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+
only showing top 2 rows

温度df。写拼花地板(path='s3://project7878/clean\u data/temperatures.parquet',mode='overwrite',partitionBy='year')

火花阅读拼花地板(path='s3://project7878/clean\u data/temperatures.parquet')。显示(2)

An error was encountered:
Unable to infer schema for Parquet. It must be specified manually.;
Traceback (most recent call last):
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 353, in parquet
    return self._df(self._jreader.parquet(_to_seq(self._spark._sc, paths)))
  File "/usr/lib/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1305, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 134, in deco
    raise_from(converted)
  File "<string>", line 3, in raise_from
pyspark.sql.utils.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.;

我参考了其他堆栈溢出帖子,但这里提供的解决方案(由于写入了空文件导致的问题)不适用于我。

请帮帮我。非常感谢。

共有1个答案

袁开宇
2023-03-14

请勿在读取中使用路径。拼花地板呼叫:

>>> spark.read.parquet(path='a.parquet')
21/01/02 22:53:38 WARN DataSource: All paths were ignored:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home//bin/spark/python/pyspark/sql/readwriter.py", line 353, in parquet
    return self._df(self._jreader.parquet(_to_seq(self._spark._sc, paths)))
  File "/home//bin/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1304, in __call__
  File "/home//bin/spark/python/pyspark/sql/utils.py", line 134, in deco
    raise_from(converted)
  File "<string>", line 3, in raise_from
pyspark.sql.utils.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.;
>>> spark.read.parquet('a.parquet')
DataFrame[_2: string, _1: double]

这是因为path参数不存在。

如果您使用load,则有效

>>> spark.read.load(path='a', format='parquet')
DataFrame[_1: string, _2: string]
 类似资料:
  • 我将spark java代码实现为,数据集输入=spark。读取()。拼花地板(configuration.getInputDataLocation()); 但是inputDataLocation(Azure存储帐户容器中的文件夹)可能没有任何数据,并且在这种情况下引发异常,用户类引发异常:org。阿帕奇。火花sql。AnalysisException:无法推断拼花地板的架构。必须手动指定。 有没

  • 这与上面文章中给出的答案不同 我收到一个错误,显示 当我尝试使用Spark 2.1.0读取拼花地板文件时 我已经检查过了,通过Hue WebPortal查看impala表,文件/表不是空的。另外,我存储在类似目录中的其他文件读起来也非常好。对于记录,文件名包含连字符,但没有下划线或句号/句点。 因此,在加载拼花地板文件时,以下帖子中的答案都无法推断模式 有什么想法吗?

  • 我正在尝试创建AWS Glue ETL作业,将存储在S3中的拼花文件中的数据加载到Redshift表中。拼花文件是使用带有“简单”文件模式选项的熊猫写入S3中的多个文件夹的。布局如下所示: s3://bucket/parquet\u table/01/file\u 1。拼花地板 s3://bucket/parquet\u table/01/file\u 2。拼花地板 S3://桶/parquet_

  • 由于,我检查了一个spark作业的输出拼花文件,该作业总是会发出声音。我在Cloudera 5.13.1上使用了 我注意到拼花地板排的大小是不均匀的。第一排和最后一排的人很多。剩下的真的很小。。。 拼花地板工具的缩短输出,: 这是已知的臭虫吗?如何在Spark中设置拼花地板块大小(行组大小)? 编辑: Spark应用程序的作用是:它读取一个大的AVRO文件,然后通过两个分区键(使用

  • 我能够以拼花格式写入,并通过如下列进行分区: 但我无法用Glue的DynamicFrame做到这一点。 我试图通过作为的一部分,因为AWS文档说拼花胶不支持任何格式选项,但这不起作用。 这有可能吗?怎么可能?至于这样做的原因,我认为工作书签是必要的,因为这对我目前不起作用。

  • 我是Spark的初学者,试图理解Spark数据帧的机制。当从csv和parquet加载数据时,我比较了spark sql dataframe上sql查询的性能。我的理解是,一旦数据加载到spark数据框中,数据的来源(csv或parquet)应该无关紧要。然而,我看到了两者之间的显著性能差异。我使用以下命令加载数据,并对其编写查询。 请解释差异的原因。