在Spark中加载多个文件时出现问题

时间:2019-07-16 10:54:32

标签: python apache-spark pyspark parquet

我有几个要使用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))

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

1 个答案:

答案 0 :(得分:0)

创建sql上下文:

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

使用sql上下文读取:

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

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