pyspark конвертирует строковый массив в Map () - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть строка, как показано ниже в текстовом файле:

ar.txt has 'K1:v1,K2:v2, K3:v3'

Я прочитал это в RDD и пытаюсь преобразовать его в MapType (StringType (), StringType ()).Когда я пытаюсь сделать это ниже, выдает ошибку с nulltype.

# Say data is in rdd called ar_rdd

ar_rdd1 = ar_rdd.map(lambda x: create_map(x.encode("ascii","ignore").split(",")) ))

Пожалуйста, предложите, как преобразовать в столбец MapType ()?

1 Ответ

0 голосов
/ 07 октября 2018

Я смог решить, используя ниже.

Прочитайте это в rdd и разбейте пары:

[Showing in steps though we can combine]

##File Input format : 'k1:v1,k2:v2,k3:v3'
rdd1 = sc.textFile(file_path)
rdd2 = rdd1.(lambda x : x.encode("ascii","ignore").split(","))
rdd3 = rdd2.(lambda x : (x[0].split(":"),x[1].split(":"),x[2].split(":")))
df = rdd3.toDF()
df.withColumn("map_column",create_map(col('_1')[0],col('_1')[1],col('_2')[0],col('_2')[1],col('_3')[0],col('_3')[1]))

Если есть какая-либо лучшая альтернатива или сделать ее динамичной для любого числапары, пожалуйста, предложите.

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