如何使用sacala代码精心设计pyspark代码?

时间:2018-05-15 14:55:46

标签: python scala pyspark-sql

我想在Pyspark代码中转换此Scala代码。

Scala代码:

Row={
  val columnArray = new Array[String](95)
  columnArray(0)=x.substring(0,10)
  columnArray(1)=x.substring(11,14)
  columnArray(2)=x.substring(15,17)
  Row.fromSeq(columnArray)
}

pyspark上的scala代码有多详细?

1 个答案:

答案 0 :(得分:1)

@Felipe Avalos @NicolasGrenié 假设您正在尝试将字符串数组转换为具有子字符串作为相应列的数据框,这将在pyspark中执行此操作。

更改column_array以使字符串数组和column_names具有每列的名称:

    column_array = ["abcdefghijklmnopqrst", "abcdefghijklmnopqrst"]
    column_names = ["col1", "col2", "col3", "col4"]

这会将数组转换为rdd,并将字符串和子字符串作为值。然后将rdd转换为具有给定列名的数据框。

    sc.parallelize(column_array).map(lambda x: (x, x[0:10], x[11:14], 
    x[15:17])).toDF(column_names).show()

这将生成以下数据框:

    +--------------------+----------+----+----+
    |                col1|      col2|col3|col4|
    +--------------------+----------+----+----+
    |abcdefghijklmnopqrst|abcdefghij| lmn|  pq|
    |abcdefghijklmnopqrst|abcdefghij| lmn|  pq|
    +--------------------+----------+----+----+