我循环浏览一组包含file_id, mimetype, file_data
的csv文件并使用Databricks
spark-csv创建一个DataFrame。然后我想将该数据帧写入Parquet Hive表。每个csv文件大约为400MB,包含1到n行,基于file_data
列的大小,其中包含二进制文件(ppts,pdfs等)。我遇到了内存错误,并想知道是否有更好的方法或我如何分别读取或写入每个DataFrame行。我在13节点集群上通过Cloudera CDH5.5.1上的Jupyter运行pyspark。
for f in files:
fullpath = path + f
df = sqlContext.read.format('com.databricks.spark.csv') \
.options(header='false', 'inferschema='false', nullValue='NULL', treatEmptyValuesAsNulls='true') \
.load(fullpath), schema = customSchema)
print df.count()
df.write.format("parquet").mode("append").saveAsTable(tablename)
print "done"