我有几个要使用Spark处理的镶木地板文件。我试过了

df = spark.read
            .parquet('*.parquet')
df.createOrReplaceTempView('df')


但是当我运行一个SQL查询,如:

SELECT col1, LAST(col1) FROM df


它似乎只查看同一文件中的最后一个元素。这是预期的行为吗?如果是,是否有任何方法可以克服?

我目前正在做的是:

fnames = !ls *.parquet
df = None
for fname in fnames:
    if df is None:
        df = spark.read.parquet(fname)
    else:
        df = df.union(spark.read.parquet(fname))


可以按预期工作,但速度确实很慢。

最佳答案

创建sql上下文:

import pyspark
sc = pyspark.SparkContext('local', "retail")
sqlContext = SQLContext(sc)


使用sql上下文阅读:

df = sqlContext.read.parquet(path/to/folder)


上面的代码读取路径指定的folder中的所有实木复合地板文件。

关于python - 在Spark中加载多个文件时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57055650/

10-12 17:53
查看更多