добавить столбец из необработанного df в giped df в pyspark - PullRequest
0 голосов
/ 12 ноября 2018

Здравствуйте. Я создал сгруппированный фрейм данных из необработанного фрейма с помощью этой команды:

sp2 = spark_df.drop_duplicates().groupBy('Transaction').agg(F.collect_list("Product").alias("items"))

, а мой spark_df фрейм данных имеет три столбца: Transaction, Products и CustomerID

Я хочу поместить столбец CustomerID в фрейм данных sp2 (он не будет группироваться).

Когда я пытаюсь присоединиться к нему с помощью этой команды:

df_joined = sp2.join(spark_df, "CustomerID")

Я получилэто сообщение об ошибке:

Py4JJavaError: Произошла ошибка при вызове o44.join.: org.apache.spark.sql.AnalysisException: столбец USING CustomerID не может быть разрешен в левой части объединения.Левые столбцы: [Транзакция, предметы];

1 Ответ

0 голосов
/ 12 ноября 2018

Эта ошибка возникает из-за того, что в вашем sp2 кадре данных нет столбца CustomerID. поэтому вы не можете присоединиться к ним на CustomerID. Я предлагаю вам создать столбец CustomerID со значением None в sp2 кадре данных, а затем соединить его с spark_df в столбце CustomerID.

Это пример кода для этого:

import pyspark.sql.functions as f

sp2 = sp2.withColumn('CustomerID', f.lit("None").cast(StringType()))

df_joined = sp2.join(spark_df, "CustomerID")

ОБНОВЛЕНИЕ : Другой способ добавить столбец CustomerID в ваши сгруппированные данные - использовать функцию first:

import pyspark.sql.functions as F

sp2 = spark_df.drop_duplicates().groupBy('Transaction').agg(F.collect_list("Product").alias("items"), F.first('CustomerID').alias('CustomerID'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...