Когда я пишу следующую команду pyspark:
# comment 1
df = df.withColumn('explosion', explode(col('col1'))).filter(col('explosion')['sub_col1'] == 'some_string') \
# comment 2
.withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2'])) \
# comment 3
.withColumn('sub_col3', from_unixtime(col('explosion')['sub_col3']))
Я получаю следующую ошибку:
.withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2']))
^
IndentationError: unexpected indent
Есть ли способ писать комментарии между строками многострочных команд в pyspark?
Это не проблема pyspark
, а скорее нарушение синтаксиса python.
Рассмотрим следующий пример:
a, b, c = range(3)
a +\
# add b
b +\
# add c
c
Это приводит к:
a +# add b
^
SyntaxError: invalid syntax
Параметр \
является символом продолжения, а python интерпретирует что-либо на следующей строке, как происходит сразу после этого, вызывая вашу ошибку.
Один из способов: вместо этого использовать круглые скобки:
(a +
# add b
b +
# add c
c)
При назначении переменной это выглядело бы так:
# do a sum of 3 numbers
addition = (a +
# add b
b +
# add c
c)
Или в вашем случае:
# comment 1
df = (df.withColumn('explosion', explode(col('col1')))
.filter(col('explosion')['sub_col1'] == 'some_string')
# comment 2
.withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2']))
# comment 3
.withColumn('sub_col3', from_unixtime(col('explosion')['sub_col3'])))
SyntaxError: invalid syntax