pyspark: выберите столбцы со специальными символами из столбца типа карты

1

в запросе для выбора некоторых столбцов из dataframe у меня есть тип столбца: map, который имеет несколько атрибутов. Я пытаюсь выбрать только несколько атрибутов из этого столбца, но это возвращает мне ошибку, поскольку некоторые атрибуты содержат специальные символы, такие как "-", другие атрибуты этого столбца работают нормально

пример:

sqlContext.sql("select colA, colB.attribute1 from schema.table")

однако, если я выбираю атрибут, содержащий -, он не работает

sqlContext.sql("select colA, colB.4-TRANSPORT from schema.table")

=> не удается

18/08/29 15:21:34 INFO ParseDriver: Parse Completed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/hdp/2.5.3.16-1/spark/python/pyspark/sql/context.py", line 580, in sql
    return DataFrame(self._ssql_ctx.sql(sqlQuery), self)
  File "/usr/hdp/2.5.3.16-1/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
  File "/usr/hdp/2.5.3.16-1/spark/python/pyspark/sql/utils.py", line 51, in deco
    raise AnalysisException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.AnalysisException: u"cannot resolve 'TRANSPORT'

я попробовал двойную цитату и т.д., пока не повезло...

  • 0
    Вы пробовали использовать обратную косую черту? например, sqlContext.sql("select colA, colB.4\-TRANSPORT from schema.table")
Теги:
dataframe
pyspark
pyspark-sql

1 ответ

0

Backquotes поможет.

sqlContext.sql("select colA, colB.'4-TRANSPORT' from schema.table")

обновлено на основе комментариев.

  • 1
    Прекрасно работает, но в кавычках только имя столбца: sqlContext.sql ("выберите colA, colB. 4-TRANSPORT` из schema.table"). Спасибо большое

Ещё вопросы

Сообщество Overcoder
Наверх
Меню