pyspark 2.4 无法从 sql 命令创建 table 需要 Hive 支持才能创建 Hive TABLE

pyspark 2.4 cannot create table from sql command Hive support is required to CREATE Hive TABLE

我正在使用 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 中运行良好。


检查 pyspark

中的以下配置值
>>> spark.sparkContext.getConf().get("spark.sql.catalogImplementation")

如果 属性 值未设置为 hive


尝试在 pyspark 中传递以下配置 shell

--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函数

将数据帧保存为table
df.format("<parquet,orc..etc>").saveAsTable("<table_name>")