我正在尝试使用以下代码在dataframe / rdd中的spark / scala中读取.gz文件的内容
val conf = new SparkConf()
val sc = new SparkContext(conf)
val data = sc.wholeTextFiles("path to gz file")
data.collect().foreach(println);
.gz文件是28 MB,当我使用此命令执行spark提交时
spark-submit --class sample--master local[*] target\spark.jar
它在控制台中提供了ma Java Heap空间问题。
这是阅读.gz文件的最佳方式,如果是,我怎样才能解决java堆错误问题。
由于
答案 0 :(得分:0)
免责声明:该代码和描述将纯粹使用spark在一个小的压缩文本文件中读取,将其收集到每行的数组中,并将整个文件中的每一行打印到控制台。在外面做到这一点的方式和理由的数量远远超过那些在火花中做到这一点的方式和原因
1)如果可以摆动它,请使用SparkSession而不是SparkContext。 <Parent status="success">
<Child id="1" name="chi">
<grandchild id="316" selected="0" />
<grandchild id="317" selected="0" />
<grandchild id="318" selected="0" />
<grandchild id="319" selected="0" />
</Child>
</Parent>
是要使用的命令(它自动处理一些压缩格式)
2)或至少使用sparkSession.read.text()
而不是wholeTextFiles
3)您在该数据上调用.collect,将整个文件带回驱动程序(在这种情况下,因为您本地没有网络限制)。如果必须执行收集,请将--driver-memory选项添加到spark shell以增加内存。