将几个表读取到同一数据帧

时间:2016-04-10 13:41:57

标签: python apache-spark spark-dataframe

我读了几个表到同一个数据框

i = 0
while (condition): 
        dfMoreData = sqlContext.read.parquet("data" + i + ".parquet")
        # process dfMoreData
        i = i + 1

我遇到有关内存不足的例外情况 我应该以及如何在每次迭代后清除dfMoreData?

1 个答案:

答案 0 :(得分:0)

要修复未将不可变值分配给任何集合的代码,一种方法是使用正则表达式或路径过滤器

sqlContext.read.parquet("data*.parquet");

使用unionAll减少数据帧

val df = (1 to 10) // assuming filenames are 1 to 10
  .map("data" + _ + ".parquet")
  .map(sqlContext.read.parquet(_))
  .reduce(_ unionAll _)

对于内存不足错误,我认为群集需要有足够的内存来加载数据。之后,您可以尝试使用MEMORY_AND_DISK选项继续执行其余操作。