从String Dataframe PySpark中提取特定的字符串,而无需知道列名或列数

时间:2019-03-08 01:24:43

标签: pyspark-sql

我是PySpark的新手,已经做了大量的自学和工作PySpark。我的要求和问题:

在处理完我的输入RDD之后,我们将在RDD的末尾附加一些值(列)并创建一个新的输出RDD。程序可以在RDD的末尾附加1个或多个1个值(列)。现在,我们需要从RDD中提取这些新值(列)并将其写入HDFS文件。

附加的新列将始终以单词“ PROCESSED-”开头,并以“]”结尾

请让我们知道如何解决这个问题。

注意:在此之前,我们将不知道输入文件中有多少列,也不知道将添加多少新列。

我的方法: 1.我已经从输出RDD创建了一个String DF。 2.使用toLocalIterator函数在DF中循环。 3.找到单词“ PROCESSED-”和“]”的位置并提取字符串 4.使用提取的字符串创建一个新的数据框,并将其写入File。

这里的问题是不使用火花并行性,它仅使用一个映射。对于少量数据,它可以正常工作。对于大数据,需要花费很长时间,而且我们遇到了垃圾回收和内存问题。

有更好的方法吗?

当前,我们没有传递用于垃圾收集的参数,因此,如果有人可以提供一些信息,可以使用哪些参数来进行更好的垃圾收集。

使用的火花提交参数:驱动程序内存= 20G,执行程序内存= 20G,驱动程序内核= 4,执行程序内核= 4,执行程序实例= 29

谢谢。

0 个答案:

没有答案