Как разработать код pyspark с кодом sacala? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу преобразовать этот код Scala в код Pyspark.

Код 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)
}

Как продублировать тот же самый scala-код на pyspark?

1 Ответ

0 голосов
/ 15 мая 2018

@ Фелипе Авалос @ Николас Гренье Предполагая, что вы пытаетесь преобразовать массив строк во фрейм данных с подстроками в качестве соответствующих столбцов, это поможет добиться успеха в 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|
    +--------------------+----------+----+----+
...