Что вы можете сделать, это сгенерировать сначала идентификатор, используя zipWithIndex
, а затем внутри функции map взять первую часть строки с r[0].split(",")[0]
, а вторую с r[0].split(",")[1:]
.
Вот код, как описано выше:
from pyspark.sql.types import StringType
lines = ["abc, x1, x2, x3",
"def, x1, x3, x4,x8,x9",
"ghi, x7, x10, x11"]
df = spark.createDataFrame(lines, StringType())
df = df.rdd.zipWithIndex() \
.map(lambda (r, indx): (indx, r[0].split(",")[0], r[0].split(",")[1:])) \
.toDF(["id", "name", "x_col"])
df.show(10, False)
И вывод:
+---+----+-----------------------+
|id |name|x_col |
+---+----+-----------------------+
|0 |abc |[ x1, x2, x3] |
|1 |def |[ x1, x3, x4, x8, x9]|
|2 |ghi |[ x7, x10, x11] |
+---+----+-----------------------+
Похоже, в конце концов есть решение онлайн.
:set formatoptions=l
:set lbr
Ссылка: http://vim.wikia.com/wiki/Word_wrap_without_line_breaks
Вы можете
:set nowrap
просто позволить огромным линиям прокручиваться по краю экрана. Но, пожалуй, лучше пойти вдвоем.
:set tw=78
устанавливает ширину текста в 78 символов. Вы можете использовать «[движение] gq», чтобы перекомпоновать некоторый текст.
Вы также можете используйте wrapmargin, который руководство определяет как:
Number of characters from the right window border where wrapping
starts. When typing text beyond this limit, an <EOL> will be inserted
and inserting continues on the next line.