Получение ошибки при преобразовании строки base64 в изображение с использованием pyspark - PullRequest
1 голос
/ 05 апреля 2019

Я хочу извлечь и обработать данные изображения (3D-массив), доступные в формате base64, используя pyspark. Я использую pandas_udf с pyarrow в качестве функции обработки. Разбирая строку base64 в функцию pandas_udf, сначала я конвертирую строку base64 в изображение. Но на этом шаге я получаю сообщение об ошибке: «TypeError: file () аргумент 1 должен быть закодированной строкой без нулевых байтов, а не str.»

Я использую функцию base64.b64decode (imgString) для преобразования строки base64 в изображение. Я использую Python 2.7

...

avrodf=sqlContext.read.format("com.databricks.spark.avro").load("hdfs:///Raw_Images_201803182350.avro")
interested_cols = ["id","name","image_b64"]
indexed_avrodf = avrodf.select(interested_cols)
ctx_cols = ["id","name"]
result_sdf = indexed_avrodf.groupby(ctx_cols).apply(img_proc)

schema = StructType([
    StructField("id",StringType()),
    StructField("name",StringType()),
    StructField("image",StringType()),
    StructField("Proc_output",StringType())
])

@pandas_udf(schema, PandasUDFType.GROUPED_MAP)
def img_proc(df):
    df['Proc_output'] = df['image_b64'].apply(is_processed)
    return df

def is_processed(imgString):
    import cv2
    from PIL import Image, ImageDraw, ImageChops
    import base64

    wisimg = base64.b64decode(imgString)
    image = Image.open(wisimg)

    .....

    return processed_status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...