我试图从mysql读取数据并将其写回s3中具有特定分区的镶木地板文件,如下所示:
df=sqlContext.read.format('jdbc')\
.options(driver='com.mysql.jdbc.Driver',url="""jdbc:mysql://:3306/<>db?user=&password=""",
dbtable='tbl',
numPartitions=4 )\
.load()
df2=df.withColumn('updated_date',to_date(df.updated_at))
df2.write.parquet(path='s3n://parquet_location',mode='append',partitionBy=['updated_date'])
我的问题是它只打开一个与mysql的连接(而不是4),并且它不会写入parquert,直到它从mysql中获取所有数据,因为我在mysql中的表很大(100M行),在OutOfMemory上进程失败.
有没有办法配置Spark来打开多个与mysql的连接并将部分数据写入拼接?