我有几个要使用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))
可以按预期工作,但速度确实很慢。
答案 0 :(得分:0)
创建sql上下文:
import pyspark
sc = pyspark.SparkContext('local', "retail")
sqlContext = SQLContext(sc)
使用sql上下文读取:
df = sqlContext.read.parquet(path/to/folder)
上面的代码读取路径指定的folder
中的所有实木复合地板文件。