С помощью Pyspark я попытался создать функцию, которая будет пропорционально возвращать содержимое фрейма данных.
def format(dataframe,take=100):
header = "\t".join(dataframe.columns)
spacer = "\t".join(["--" for c in dataframe.columns])
data = ["\t".join([unicode(a.asDict()[c]) for c in dataframe.columns]) for a in dataframe.take(take)]
return "\n".join([header, spacer] + data)
Но в некоторых значениях фрейма данных есть символы, отличные от ascii, которые бросают UnicodeEncodeError: код ascii c не может кодировать символы в позиции 4-5: порядковый номер не в диапазоне (128) Исключение
Я пытался добавить функцию кодирования («utf8») в фрейм данных, но не работает,
Чтобы более прояснить проблему, вот пример:
df= spark.createDataFrame([
[1, "value_1"],
[2, "value_1"],
[3, "value_2"],
[4, "valué_2"]
], ['key', 'value']
)
Когда я вызываю свою функцию, я получаю неверную последнюю строку
print show_function(df)
+---+--------+
|key| value|
+---+--------+
| 1| value_1|
| 2| value_1|
| 3| value_2|
| 4|valué_2|
+---+--------+
Любая помощь, пожалуйста, спасибо