2

所以,我是初学者,正在 Databricks 上学习 spark 编程(pyspark)——

我想做什么?

列出目录中的所有文件并将其保存到数据框中,以便我能够在此文件列表上应用过滤器、排序等。为什么 ?因为我试图在我的目录中找到最大的文件。

为什么下面不起作用? 我错过了什么?

从 pyspark.sql.types 导入 StringType

sklist = dbutils.fs.ls(sourceFile)

df = spark.createDataFrame(sklist,StringType())

4

1 回答 1

3

好的,实际上,我想通了:)。只是想把问题留在这里,以防有人从中受益。

所以基本上,问题出在模式上。并非列表中的所有元素都是字符串类型。所以我明确地创建了一个模式并在 createDataFrame 函数中使用它。

工作代码 -

from pyspark.sql.types import StructType, StructField, IntegerType, StringType

ddlSchema = StructType([
StructField('path',StringType()),
StructField('name',StringType()),
StructField('size',IntegerType())
])

sklist = dbutils.fs.ls(sourceFile)
df = spark.createDataFrame(sklist,ddlSchema)
于 2021-02-12T05:02:59.613 回答