pyspark получает доступ к столбцу фрейма данных с точкой ‘.’

#apache-spark #apache-spark-sql

#apache-spark #фрейм данных #pyspark

Вопрос:

Фрейм данных pyspark, содержащий точку (например, «id.orig_h»), не будет разрешен groupby после, если он сначала не переименован withColumnRenamed . Есть ли обходной путь? "`a.b`" похоже, это не решает проблему.

Комментарии:

1. Можете ли вы поделиться кодом, который вы используете для группировки?

Ответ №1:

В моей оболочке pyspark работают следующие фрагменты:

 from pyspark.sql.functions import *
myCol = col("`id.orig_h`")    
result = df.groupBy(myCol).agg(...)
  

и

 myCol = df["`id.orig_h`"]   
result = df.groupBy(myCol).agg(...)
  

Я надеюсь, что это поможет.

Комментарии:

1. Спасибо @Daniel de Paula за ваш ответ. Можете ли вы подтвердить, что использование groupby("`id.orig_h`") не работает?

2. @HananShteingart, для меня работает следующий код: df.groupBy("`id.orig_h`").agg(...)

3. Для меня это не так. Не могли бы вы, пожалуйста, добавить еще столбцы, начинающиеся с id. ? Я использую pyspark 1.6

4. @HananShteingart как был создан ваш фрейм данных? Как вы выполняете свою операцию groupBy? Можете ли вы показать результат df.printSchema() ?