在foreach循环中创建数据帧Apache Spark

时间:2018-07-23 19:02:01

标签: scala apache-spark dataframe apache-spark-sql

我是Spark Scala的新手。如果有人可以在这里帮助我,我将不胜感激。我有一个名为df的数据框。

df.printSchema()
root
 |-- tab: string (nullable = true)
 |-- cust: string (nullable = true)
 |-- date: string (nullable = true)
 |-- uniqIds: string (nullable = true)

df.show()
+-------+----+----------+--------------------+
|    tab|cust|      date|             uniqIds|
+-------+----+----------+--------------------+
|t_users| abc|2018050918|[123, 1234, 22123]  |
|t_users| def|2018050918|[1sdf23, 12f34]     |
+-------+----+----------+--------------------+

现在,我想遍历每条记录并进行一些处理,即从前三列开始另一个函数/过程。如果该过程成功。然后,我想将uniqIds列中的所有值存储到df中。获得成功过程的所有uniqId之后,将它们写入文件中。

var uq = Seq((lit(e))).toDF("unique_id)
df.foreach { row => 
val uniqIds: Array[String] = row(3).toString.replace("[", "").replace("]", "").replace(" ","").split(",")
uniqIds.foreach { e=> 
var df2 = Seq((lit(e))).toDF("unique_id)
uq.union(df2)
}

但是当我尝试这样做时,我收到一条错误消息

  

错误执行程序:91-阶段11.0(TID 23)中的任务1.0发生异常   java.lang.NullPointerException

有人有同样的问题吗?我该如何克服这个问题。预先感谢。

0 个答案:

没有答案