我有几个要用 Spark 处理的 parquet 文件。我试过了
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)
以上代码读取路径指定的文件夹中的所有parquet文件。
