无法将超过1000条记录写入HDFS配置单元表pyspark

时间:2019-10-15 19:53:25

标签: python apache-spark pyspark apache-spark-sql pyspark-sql

我正在尝试对数据集进行一些操作。您可以在代码的注释掉部分中看到,如果我对选择的1000条记录进行LIMIT操作,则插入可以正常运行。这使我相信这是一个内存问题。到目前为止,我已经更改了以下yarn-site.xml设置

spark.shuffle.memoryFraction = 0

spark.executor.overhead.memory = 1024

spark.driver.overhead.memory = 1024

我的火花提交如下:

spark-submit transfer.py --num-executors 8 --deploy-mode cluster --executor-memory 4g --driver-memory 0 --executor-cores 4

Python代码: 表名称和列名称在下面的代码中已被遮盖。

from os import getcwd
from pyspark.sql import HiveContext
from pyspark import SparkConf
from pyspark import SparkContext
conf = SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('spark-yarn')
sc = SparkContext(conf=conf)
hive_context = HiveContext(sc)
from pyspark.sql import functions as F
from pyspark.sql import Window 
from pyspark.sql.functions import col
from pyspark.sql.functions import array

df = hive_context.table("schema.sourcedata")

df1 = df.groupBy('val1',).\
      agg(F.collect_set('val2').alias('val2'),
          F.collect_set('val3').alias('val3'),
          F.collect_set('val4').alias('val4'),
          F.collect_set('val5').alias('val5'),
          F.collect_list('val6').alias('val6'))

newDF = df1.repartition(3000)
#testdf2.count()
#df1.registerTempTable("temp_table")
#hive_context.sql("CREATE TABLE schema.table AS SELECT val1,val2,val3,val4,val5,val6 FROM temp_table LIMIT 100000") 
newDF.write.mode("overwrite").saveAsTable("schema.resulttable");

我现在没有收到错误,仅完成199/200任务,然后挂起长达15小时的小时。 df为910,000行和6列宽。

0 个答案:

没有答案