pyspark 2.4 не может создать таблицу из команды sql Требуется поддержка Hive для CREATE Hive TABLE - PullRequest
0 голосов
/ 25 июня 2019

Я использую pyspark 2.4, и я уже включил HiveSupport:

spark = SparkSession.builder.appName("spark").enableHiveSupport().getOrCreate()

, но когда я бегу:

spark.sql("""
CREATE TABLE reporting.sport_ads AS

SELECT 
*
, 'Home' as HomeOrAway
, HomeTeam as TeamName
FROM adwords_ads_brand
UNION
SELECT 
*
, 'Away' as HomeOrAway
, AwayTeam as TeamName
FROM adwords_ads_brand
""")

Я сталкиваюсь с ошибкой:

pyspark.sql.utils.AnalysisException: "Hive support is required to CREATE Hive TABLE (AS SELECT);;\n'CreateTable `reporting`.`sport_ads`, org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, ErrorIfExists\n+- Distinct\n   +- Union\n      :-
....

Для меня это не имеет никакого смысла, я что-то не так делаю?

ps: я должен добавить, что этот код очень хорошо работает в блоках данных и со Spark со Scala.

1 Ответ

1 голос
/ 25 июня 2019

Проверьте приведенное ниже значение конфигурации в вашем pyspark

>>> spark.sparkContext.getConf().get("spark.sql.catalogImplementation")

если значение свойства не установлено на hive.


Попробуйте передать приведенный ниже conf в оболочке pyspark

--conf spark.sql.catalogImplementation=hive

и снова запустите ваш код.

UPDATE:

Создать запрос dataframe вне объединения:

val df = spark.sql("""SELECT 
*
, 'Home' as HomeOrAway
, HomeTeam as TeamName
FROM adwords_ads_brand
UNION
SELECT 
*
, 'Away' as HomeOrAway
, AwayTeam as TeamName
FROM adwords_ads_brand""")

Затем сохраните фрейм данных в виде таблицы, используя функцию .saveAsTable

df.format("<parquet,orc..etc>").saveAsTable("<table_name>")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...